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