• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            力為的技術博客

            聯系 聚合 管理
              154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
            近日老吳把他讀小學的兒子的一道題拿給幾個兄弟做,推來推去煞是麻煩。無奈用程序暴力破解之。

            話說有五個小矮人上山摘野果,摘回來后平均分,可是怎么也分不下去.因為分不平均.到了晚上,一個小矮人爬起來,從里面扔了一個,剛好能平均分成五份.然后他把自己的那份藏起來,就睡覺去了.第二個小矮個也爬了起來,也把果子扔了一個后剛好分成5份,他也把自己那份藏了起來.然后睡覺,余下3 個小矮人都是這樣做的,過程完全一樣. 請問,最初這堆果子至少有多少個?

             

            #include <iostream>

            #define BOY_COUNT (5)

            bool gotByOneBoy(int& nTotal)
            {
               
            --nTotal; // throw one
               if(nTotal%5 != 0)
                  
            return false;

               nTotal 
            -= nTotal/5// hide his
               
               
            return true;
            }


            int _tmain(int argc, _TCHAR* argv[])
            {

               
            int n = 100;
               
            for(; n<10000++n)
               
            {

                  
            bool bFind = true;
                  
            int nCur = n;
                  std::cout 
            << nCur << std::endl;

                  
            for(int nBoy=1; nBoy<=BOY_COUNT; ++nBoy)
                  
            {
                     bFind 
            = bFind && gotByOneBoy(nCur);
                  }



                  
            if(bFind)
                  
            {
                     std::cout 
            <<  "This is the result: " << n << std::endl;
                     
            break;
                  }

               }


               
            char ch;
               std::cin 
            >> ch;
                
            return 0;
            }
            posted on 2007-06-25 18:07 力為 閱讀(2868) 評論(15)  編輯 收藏 引用 所屬分類: Tools

            評論

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-25 20:35 小不點
            不是吧,C語言課程里有相同的題目!

            <---
            題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只
               猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
               一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,
               問海灘上原來最少有多少個桃子?
            --->

              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-25 21:08 xlander
            倒著推啊。
            題目問的是:最少有多少個?
              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-25 21:09 小不點
            我不知道 我的方法對嗎?自己當時做的.
            順便幫我修改下好了,呵呵,謝謝!
            #include <iostream>
            using namespace std;

            int main()
            {
            int total = 0;
            int i = 0;

            for(total = 1 ; total < 10000; total++)
            {
            for(; i < 5; i++)
            {
            if((total - 1) % 5 == 0)
            {
            total = (total-1)/5;
            }
            else
            {
            break;
            }
            }

            if(i == 5)
            {
            for(i = 0; i < 5; i++)
            {
            total = total * 5+1;
            }
            cout << "The least total is : " << total << endl;
            break;
            }
            }

            return 0;
            }  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-25 22:57 力為
            結果是 3121 就對了 :)  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-26 09:26 Rocky
            總數=5*5*5*5*5 * x + 5*5*5*5 + 5*5*5 + 5*5 + 5 + 1
            當x取1時總數最小,即3906個。  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-06-26 12:16 閑耘
            see http://blog.xianyun.org/2007/06/cpp-5.html

            int getTotal(){
            int total = 1; // 設初始野果總數1個
            while (true){
            int _t = total;
            for (int i = 1; i <= 5; i++){
            if ((_t - 1) % 5 == 0){ // 條件:扔掉1個能夠5等分
            _t = (_t - 1) / 5 * 4; // 第i個矮人拿走1/5后剩下的繼續循環
            if (i == 5){ // 如果5個矮人都拿到野果
            return total;
            }
            }
            }
            total ++; // 不滿足則野果總數加1
            }
            }

            輸出:3121  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-07-01 17:45 s
            5+1
            30+1
            155+1
            780+1
            3905+1
            3906

              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-08-21 17:39 van
            30個藏起來一份就是24,扔掉一個怎么會可以分成5份呢..  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-09-03 16:56 haha
            怎么會這樣的答案 我感覺不對啊 不就是逆推嗎?

            //4 3 2 1 0
            #define M 5
            #define N 1
            int main(void)
            {

            int i ;
            int sum=N;
            for(i=0;i<M ; i++)
            {
            sum = sum*5 +1;
            }
            cout<<sum<<endl;

            return 0;
            }
            3906個?!?  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-10-08 00:22 biogerm
            T = 5(5(5(5(5n+1)+1)+1)+1)+1

            n = 1

            T = 3906  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-10-08 10:06 Icat
            寫了兩個湊熱鬧,第一個把For做的事情手動換算了
            第二個假裝可以自定義數量,其實馬上就溢出........
            1.
            #include <iostream>
            using namespace std;
            int main()
            {
            unsigned long x=0;//總數為X*5+1
            while((((x*5+1)*256-2101))%(5*625))
            {
            x+=1;
            }
            cout<<x*5+1<<endl;
            }
            2.
            #include <iostream>
            using namespace std;
            int main()
            {
            unsigned long lTotal=1;
            unsigned long x=1;
            int iMonkey=5;
            //cin>>iMonkey;
            bool bOK=false;
            do
            {
            lTotal=x*iMonkey+1;
            for(int i=1;i<iMonkey;++i)
            {
            lTotal=(lTotal+1)*(iMonkey)/(iMonkey-1);
            if((lTotal-1)%(iMonkey))
            break;
            else
            if(i==(iMonkey-1))bOK=true;
            }
            ++x;

            }while(!bOK);
            cout<<y<<endl;
            }

            3121

            樓上幾位的3906,思路差不多,但留下的是4/5~
              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2007-10-08 21:04 Bill Gates
            沒有想到這個小題可以蓋到如此高的樓~~  回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2010-04-08 21:55 看看哪個方法好一點
            #include <iostream>

            bool test(int total, int level)
            {
            if (level==0)
            return true;

            if ((total-1)%5!=0)
            return false;

            total=(total-1)/5 *4;
            return test(total,level-1);
            }

            bool test2(int iGet,int level,int& beforGet)
            {
            beforGet=iGet*5+1;
            if (level==5)
            return true;

            if ((beforGet%4)!=0)
            return false;

            iGet=beforGet/4;
            return test2(iGet,level+1,beforGet);
            }

            int main(int argc,char*argv[])
            {
            int i=1;
            int total;
            for (;i<10000 ;++i)
            {
            if (test2(i,1,total))
            {
            std::cout<<total<<std::endl;
            // break;
            }
            }
            for (i=0;i<10000 ;++i)
            {
            if (test(i,5))
            {
            std::cout<<i<<std::endl;
            // break;
            }
            }

            return 0;
            }
              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2010-10-17 21:04 666
            在森林里住著五個小矮人,一天他們從山上采來一堆野果,可怎么也分不公平,就都去睡覺了。到了半夜,有一個小矮人偷偷地起來,在這堆野果里拿出一個扔了,剩下的野果正好可分成5等份,他拿了其中的一分藏了起來,又睡覺去了。接著,第二個小矮人也起來了,也扔了一個野果。又恰好分成五等份,也拿了其中一份藏了起來,又去睡覺了。以后另外3人也一一照樣扔掉了一個野果,還能分成5等份......原來這堆野果至少有多少個呢?李永莉你好:我來還原一下有3121個野果,第一個人去分時剩(3121-1)×4÷5=2496 第二個人去分時剩(2496-1)×4÷5=1996 第三個人去分時剩(1996-1)×4÷5=1596 第四個人去分時剩(1596-1)×4÷5=1276 第五個人去分時拿走了(1276-1)÷5=255 謝謝你

              回復  更多評論
              

            # re: 五個小矮人分桃子-一道小學生的作業題目 2010-12-06 16:49 wu4long
            暈了,難道不能先計算他們的公式.然后簡單迭代一下.后面就好算了.
            設總數為a, 第一次為a1, 第二次a2,依次類推,最后一個小猴子藏起來的為a5.

            a1 = (a-1)/5
            a2 = (4a1 -1)/5
            a3 = (4a2 -1)/5
            a4 = (4a3-1)/5
            a5 = (4a4-1)/5

            a = a1 + a2 + a3 + a4 + a5 + 5 + 4a5
            迭代: 算得
            a = 12 a5 + 8 + 53(a5 + 1)/256

            明顯 53 為素數, 所以 必然 a5 = 256* n - 1. (n 為自然數)

            這時,這段程序就很簡單了. 呵呵
            a5 = 256* 1 -1 = 255
            a = 12 * a5 + 8 + 53(a5+1)/256 = 3121.


              回復  更多評論
              

            久久这里只有精品首页| 四虎亚洲国产成人久久精品| 性做久久久久久久| 久久久久久亚洲Av无码精品专口| 久久777国产线看观看精品| 久久国产精品免费| 麻豆一区二区99久久久久| 99久久免费只有精品国产| 囯产极品美女高潮无套久久久| 好久久免费视频高清| 色天使久久综合网天天| 国产精品久久永久免费| 久久久亚洲裙底偷窥综合| 成人a毛片久久免费播放| 天天躁日日躁狠狠久久| 欧美久久亚洲精品| 日本道色综合久久影院| 久久久久久人妻无码| 97香蕉久久夜色精品国产 | 久久精品国产亚洲精品2020| 国产成人综合久久久久久| 69久久精品无码一区二区| 伊人久久大香线蕉AV色婷婷色| 久久综合狠狠综合久久97色| 91精品国产色综久久| 久久精品国内一区二区三区| 久久青青草原精品国产| 7777精品久久久大香线蕉| 久久精品日日躁夜夜躁欧美| 人妻丰满?V无码久久不卡| 久久不见久久见免费影院www日本| 久久国产精品久久国产精品| 国产精品美女久久久m| 久久精品中文无码资源站| 狠狠色丁香久久婷婷综合五月| 久久久噜噜噜久久中文字幕色伊伊 | 久久免费小视频| 久久精品国产精品青草| 国产日产久久高清欧美一区| 亚洲国产精品久久久久婷婷软件| 欧美精品一本久久男人的天堂|