當(dāng)前位置:
首頁 >
C语言经典例80-猴子分桃
發(fā)布時(shí)間:2025/6/17
31
豆豆
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例80-猴子分桃
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 1 題目
- 2 分析
- 3 實(shí)現(xiàn)
- 4 運(yùn)行結(jié)果
1 題目
海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子平均分為五份,多了一個(gè),這只 猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一個(gè),它同樣把多的一個(gè)扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的, 問海灘上原來最少有多少個(gè)桃子?
2 分析
設(shè)原來至少有 xxx 個(gè)桃子:
求 xxx 就是要從 eee 反推到 xxx,本題限定了要求桃子最少的情況,那么當(dāng)輪到第五只猴子時(shí),要保證最少,則一開始設(shè) e=4e = 4e=4 即此時(shí)剩余4份每份只有1個(gè)桃子,然后利用該假設(shè)進(jìn)行向上遞歸計(jì)算每輪剩余的桃子個(gè)數(shù),判斷每輪剩余桃子個(gè)數(shù)能否被4整除,若中間有一輪不能被4整除,則一開始 e!=4e!=4e!=4,則用 2?42*42?4重新嘗試,每輪都要乘444是因?yàn)?#xff0c;每輪都要保證能被4整除。
3 實(shí)現(xiàn)
#include <stdio.h> #include <stdlib.h>int main() {int x; // 桃子總數(shù)int i = 0; // 循環(huán)輪數(shù)int j = 1; // 暫存每輪嘗試的起始e的倍數(shù)while (i < 5) { // 一共五只猴子,五輪循環(huán)x = 4 * j; // 擬定起始e的值for (i = 0; i < 5; i++) {if (x % 4 != 0) { // 最后一只猴子待分配的桃子數(shù)一定能被4整除break; // 若在5輪中某一論不能被4整除,則要重新更換起始e的值}x = (x/4)*5+1; // 向上遞歸累加}j++; // 通過遞增j來更換4的倍數(shù),從而重新更換起始e的值}printf("%d\n", x);return 0; }4 運(yùn)行結(jié)果
3121總結(jié)
以上是生活随笔為你收集整理的C语言经典例80-猴子分桃的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典例79-字符串排序
- 下一篇: C语言经典例82-八进制转换为十进制