题目翻译:
一个即将毕业的班级里有 G G G 个女生和 B B B 个男生。你需要在毕业典礼上把它们排成一排。为了给人一种多样化的印象,你应该避免连续坐太多女孩或太多男孩。你决定安排学生是为了减少男女比例。排列的性别规律性是指连续出现的同性别学生(全是女生或全是男生)的最大数量。已知 G G G 和 B B B ,计算所有可能安排中最小的性别规律性。
思路:
把男生个数平均分成女生的个数份,然后向上取整,就是 ⌈ B G + 1 ⌉ \left\lceil\dfrac{B}{G + 1}\right\rceil ⌈G+1B⌉ 。这就是最终的答案,输出即可。
样例:
输入:
10 10
5 1
0 1000
-1 -1
输出:
1
3
1000
求管理员改一下这题的样例,上面显示的都是 \n
。
代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int a,b;
while(cin >> a >> b){//输入
if(a < b){
swap(a,b);//如果男生小于女生就交换
}
if(a == -1){//-1结束
break;
}else if(b == 0){//没女生或没男生就直接输出另外一个
cout << a << endl;
}else{
cout << ceil((double)(a) / (double)(b + 1)) << endl;//那个公式套进去,(double)是强制转换
}
}
return 0;
}