C趣味程序(二)(01)舍罕王的失算

字號(hào):

1.1.3 舍罕王的失算
     相傳國(guó)際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王十分喜愛象棋,決定讓宰相自己選擇何種賞賜。這位聰明的宰相指著8X8共64格的象棋盤說:陛下,請(qǐng)您賞給我一些麥子吧。就在棋盤的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一位,依此放完棋盤上64格,我就感激不盡了。舍罕王讓人扛來一袋麥子,他要兌現(xiàn)他的許諾。
     請(qǐng)問,國(guó)王能兌現(xiàn)他的許諾嗎?共要多少麥子賞賜他的宰相?合多少立方米?(1立方米麥子約1.42e8粒)
    算法分析:
    這是一個(gè)典型的等比數(shù)列求和的問題。
     第1格1粒,第2格2粒,第3格4=22粒,...,第i格為2i-1粒,于是總粒數(shù)為:
     s=1+2+22+23+...+263
     設(shè)置求和i循環(huán),把每一項(xiàng)的通項(xiàng)2i-1(或由t=t*2得到的累乘量t)累加到和變量s中,即可實(shí)現(xiàn)該等比數(shù)列求和。
    程序代碼如下:
    #include
    void main()
    {
     double t=1,s=1;
     int i;
     for(i=;i<=63;i++)
     {
     t=t*2;
     s=s+t;
     }
     printf("總麥粒數(shù)為:%f\n",s);
     printf("折合體積為%f立方米\n",s/1.42e8);
    }