日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(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è)桃子:

  • 第一只猴子拿走一份后,剩余的444份桃子總數(shù)為aaaa=4/5?(x?1)a=4/5*(x-1)a=4/5?(x?1)
  • 第二只猴子拿走一份后,剩余的444份桃子總數(shù)為bbbb=4/5?(a?1)b=4/5*(a-1)b=4/5?(a?1)
  • 第三只猴子拿走一份后,剩余的444份桃子總數(shù)為cccc=4/5?(b?1)c=4/5*(b-1)c=4/5?(b?1)
  • 第四只猴子拿走一份后,剩余的444份桃子總數(shù)為dddd=4/5?(c?1)d=4/5*(c-1)d=4/5?(c?1)
  • 第五只猴子拿走一份后,剩余的444份桃子總數(shù)為eeee=4/5?(d?1)e=4/5*(d-1)e=4/5?(d?1)
  • 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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。