算法竞赛入门经典 韩信点兵 C解法
程序员文章站
2022-03-14 19:30:20
...
习题2-2 韩信点兵(hanxin)
相传韩信才智过人,从步直接清点自己军队的人数,只让士兵先后以三人一排,五人一排,七人一排变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c< 7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件 结束为止。
样例输入:
2 1 6
2 1 3
样例输出:
Case 1: 41
Case 2: No answer
#include<stdio.h>
int main()
{
int a, b, c, kase = 0, temp, i;
while(scanf("%d%d%d", &a, &b, &c) != EOF)//读入多组数
{
for( i = 10; i <= 100; i++)
{
if((i % 3 == a) && (i % 5 == b) && (i % 7 == c))
{
temp = i;
break;//跳出循环
}
}
if( i > 100 ) printf("Case %d: No answer\n", ++kase);//kase 记组数
else printf("Case %d: %d\n", ++kase, temp);
}
return 0;
}
代码问题
- 对于 i > 100 算是个挺好的判断, 一开始尝试让遍历无果时,给定赋值-1 再判断输出数 结果没跑出来
- while(scanf("%d%d%d", &a, &b, &c) !=EOF)读入格式 新人可能会对多组数据处理感到无从下手
- 暴力求解 听说有中国剩余定理 能应对大数据 在这挖个坑
第一次的Blog 记录蒻鸡学习
下一篇: 初一吃汤圆是单数还是双数