韩信点兵问题
网上找到的答案都是只能输入一组数据立即给出结果的,这里是能输入多组数据然后一次性输出全部结果的。
描述
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。输入到文件结束为止。
样例输入:
2 1 3
2 1 6
样例输出:case 1:41
case 2:No answer
代码如下(由于输入不能靠回车,所以需要按住ctrl+d再回车即可)
/*韩信点兵*/
#include<stdio.h>
int main()
{
int a[40],b[40],c[40],i;
int kase=0;//显示第几个案例
int x=0;
while(scanf("%d %d %d",&a[x],&b[x],&c[x])!=0)
{
x++;
if(scanf("%d %d %d",&a[x],&b[x],&c[x])!=0)
x++;
else
break;
}
int j=0;
for(;j<x;j++)
{ int print=1;//是否有解
for(i=10;i<=100;i++)
{
if(i%3==a[j]&&i%5==b[j]&&i%7==c[j])
{
printf("case %d:%d\n",++kase,i);
print=0;
break;
}
}
if(print) printf("No answer.\n");
}
return 0;
}