韩信点兵算法描述:http://wenwen.soso.com/z/q171749894.htm
“相传韩信用一种特殊方法清点士兵的人数。他的方法是:让士兵先列成三列纵队(每行三人),再列成五列纵队(每行五人),最后列成七列纵队(每行七人)。他只要知道这队士兵大约的人数,就可以根据这三次列队排在最后一行的士兵是几个人,而推算出这队士兵的准确人数。”
自己实现的代码如下:
#include <stdio.h>
int main()
{
int i=0;
int a,b,c;
scanf("%d%d%d", &a, &b, &c);
if (a < 3 && b < 5 && c < 7) { //对输入的人数进行限制
for (i = 10; i <= 100; i++) { //已知总人数的范围10-100
if ((i%3 == a) && (i%5 == b) && (i%7 == c)) //如果有一个数都满足说明有解
break;
}
}
if (i >= 10 && i <= 100) //判断是否超出范围
printf("%d\n", i); //输出解
else if (i > 100) //无解
printf("No answer\n");
return 0;
}
在输入队尾的人数时:a<3 and b<5 and c<7
示例:
输入:2 3 4
输出:53
^_^ THE END