计算机网络技术网站开发,网站的推广方式有哪些,南京奥美广告公司,网站建设后百度找不到学校新建了宿舍楼#xff0c;共有 n 间寝室。等待分配的学生中#xff0c;有女生 位、男生 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去#xff0c;最后不能有寝室留空。 现请你写程序完成寝室的自动分配。分配规则如下#xff1a;
男女生不能混住共有 n 间寝室。等待分配的学生中有女生 位、男生 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去最后不能有寝室留空。 现请你写程序完成寝室的自动分配。分配规则如下
男女生不能混住不允许单人住一间寝室对每种性别的学生每间寝室入住的人数都必须相同例如不能出现一部分寝室住 2 位女生一部分寝室住 3 位女生的情况。但女生寝室都是 2 人一间男生寝室都是 3 人一间则是允许的在有多种分配方案满足前面三项要求的情况下要求两种性别每间寝室入住的人数差最小。
输入格式
输入在一行中给出 3 个正整数 分别对应女生人数、男生人数、寝室数。数字间以空格分隔均不超过 。
输出格式
在一行中顺序输出女生和男生被分配的寝室数量其间以 1 个空格分隔。行首尾不得有多余空格。 如果有解题目保证解是唯一的。如果无解则在一行中输出 No Solution。
输入样例 1
24 60 10输出样例 1
4 6注意输出的方案对应女生都是 24/46 人间、男生都是 60/610 人间人数差为 4。满足前三项要求的分配方案还有两种即女生 6 间都是 4 人间、男生 4 间都是 15 人间或女生 8 间都是 3 人间、男生 2 间都是 30 人间。但因为人数差都大于 4 而不被采用。即要选择人数差最小的方案
输入样例 2
29 30 10输出样例 2
No Solution 代码实现: #include iostream
#include algorithmusing namespace std;
/*** 分寝室问题(PTA)* 已经提交通过!!!* return*/
int main() {int girl 0, boy 0, n 0;cin girl boy n;int count 0;//统计可行的方案int fabs max(girl, boy);//在后面不断更新fabs,便于找到人数差最小的一种方案int male 0;//男生宿舍数int female 0;//女生宿舍数//i表示宿舍数for (int i 1; i n; i) {//(girl / i) 1 (boy / (n - i)) 1是为了保证不能单人住一间寝室if (girl % i 0 boy % (n - i) 0 (girl / i) 1 (boy / (n - i)) 1) {count;int poor abs(girl / i - boy / (n - i));if (poor fabs) {fabs abs(girl / i - boy / (n - i));female i;male n - i;}}}if (count 0) {cout No Solution endl;} else {cout female male endl;}return 0;
}