翻譯:
若將一疊卡片放在一張桌子的邊緣,你能放多遠?如果你有一張卡片,你最遠能達到卡片長度的一半。(我們假定卡片都正放在桌子上。)如果你有兩張卡片,你能使最上的一張卡片覆蓋下面那張的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 >= c)
{
printf("%d card(s)\n", i);
break;
}
i++;
}
}
return 0;
}