在中国数学史上,广泛流传着一个 “韩信点兵” 的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
按从 1 至 5 报数,记下最末一个士兵报的数为 1;
再按从 1 至 6 报数,记下最末一个士兵报的数为 5;
再按从 1 至 7 报数,记下最末一个士兵报的数为 4;
最后按从 1 至 11 报数,最末一个士兵报的数为 10;
请编写程序计算韩信至少有多少兵。
输入格式:
本题无输入
输出格式:
输出韩信至少拥有的士兵人数。
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/439
提交:
题解:
#include<stdio.h>
int main(void) {
int number = 1;
while (1) {
/*
* 按从 1 至 5 报数,记下最末一个士兵报的数为 1;
* 再按从 1 至 6 报数,记下最末一个士兵报的数为 5;
* 再按从 1 至 7 报数,记下最末一个士兵报的数为 4;
* 最后按从 1 至 11 报数,最末一个士兵报的数为 10;
*/
if (number % 5 == 1 && number % 6 == 5 && number % 7 == 4 && number % 11 == 10) {
printf("%d\n", number);
break;
}
number++;
}
return 0;
}