男生女生分配
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1470
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
学校有A个同学参加数学竞赛,如果将参赛人员分成B组,则必有一组的女生的女生的人数大于C,又知参赛者中任意D人中至少有男生E人,则参赛的男生最多有Y人,最少有X人。如果结果逻辑错误,输出-1.
输入
多组输入,输入A,B,C,D,E。全部为0的时候结束。(A,B,C,D,E全部为整数。)
输出
输出X,Y。
示例输入
55 4 2 10 1 10 1 11 5 1 0 0 0 0 0
示例输出
46 46 -1
提示
代码:
1 #include<stdio.h> 2 int main() 3 { 4 int a,b,c,d,e; 5 while(scanf("%d%d%d%d%d",&a,&b,&c,&d,&e),a|b|c|d|e) 6 { 7 int x=a-d+e;//x求最少人数 8 int y=a-b*c-1;//y求最多人数 9 if(c<0) 10 y=a; 11 if(e<=0) 12 x=0; 13 if(x>y)//逻辑错误 14 printf("-1\n"); 15 else 16 printf("%d %d\n",x,y); 17 } 18 return 0; 19 }
上面的代码有问题:
首先c和e可以是负数,这不合常理,因为我们都知道人数必须是正的才行;y=a-b*c-1=a-(b*c+1)=a-[(b-1)*c+(c+1)],如果是这个意思的话,是不是就意味着每组女生至少有c人(除去那一组大于c人的),如果是这样的话好像和题意不符,原文是“必有一组的女生的女生的人数大于C”,这句话是不是可以认为有一组女生人数至少为c+1人,其他组女生的人数任意?如果是这样的话女生的人数至少应为c+1人,而不是b*c+1人。。题目中关于这句话的描述非常不清楚,是哪个白痴出的问题,关键的语句竟然不说清楚,想让我们猜吗?