POJ1003題

翻譯:

若將一疊卡片放在一張桌子的邊緣,你能放多遠?如果你有一張卡片,你最遠能達到卡片長度的一半。(我們假定卡片都正放在桌子上。)如果你有兩張卡片,你能使最上的一張卡片覆蓋下面那張的1/2,底下的那張可以伸出桌面1/3的長度,即最遠能達到 1/2 + 1/3 = 5/6 的卡片長度。一般地,如果你有n張卡片,你可以伸出 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) 的卡片長度,也就是最上的一張卡片覆蓋第二張1/2,第二張超出第三張1/3,第三張超出第四張1/4,依此類推,最底的一張卡片超出桌面1/(n + 1)。下面有個圖形的例子:

現在給定伸出長度C(0.00至5.20之間),輸出至少需要多少張卡片。

具體的輸入輸出要求請看poj官網,謝謝!

 

 

我的代碼如下:

#include <stdio.h>

int main(int argc, char *argv[])
{

    float c = 1.0;
    float sum = 0;
    int i = 1;

 

    while(c != 0)
    {
        scanf("%f", &c);

        if(c == 0)
            break;


        sum = 0.0;
        i = 1;

        while(1)
        {
            sum += 1.0 / (i+1);
            if(sum &gt;= c)
            {
                printf("%d card(s)\n", i);
                break;
            }
            i++;
        }
    }

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章