C语言练习题-C语言练习题实例80
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
程序分析:根据题意,假设海滩上原来最少有 x 个桃子。根据第一个猴子的描述,桃子数量应满足以下条件:x ≡ 1 (mod 5),即 x 除以 5 的余数为 1。根据第二个猴子的描述,剩下的桃子数量应满足以下条件:(x - 1) 4/5 ≡ 1 (mod 5),即 (x - 1) 4/5 除以 5 的余数为 1。依次类推,根据第三、第四、第五只猴子的描述,剩下的桃子数量都满足类似的条件。找到符合条件的 x,即为答案。
实例
#include<stdio.h>
#include<stdlib.h>
int main() {
int x, i = 0, j = 1;
while (i < 5) {
x = 4 * j;
for (i = 0; i < 5; i++) {
if (x % 4 != 0) {
break;
}
x = (x / 4) * 5 + 1;
}
j++;
}
printf("%d\n", x);
return 0;
}
以上实例运行输出结果为:
3121
在上述代码中,我们使用了一个循环来找到符合条件的桃子数量 x。变量 j 用于递增测试桃子数量。内部的 for 循环用于检查是否符合猴子分桃的条件,即 x % 4 != 0,如果符合则进行下一次循环,否则继续增加桃子数量。最终找到满足条件的 x,并输出。
以上实例运行时,会输出满足猴子分桃条件的最少桃子数量。例如,输出结果为 3121,表示海滩上原来最少有 3121 个桃子。
该程序通过循环逐个增加桃子数量,并根据猴子分桃的条件进行检查,直到找到满足条件的最小桃子数量。