POJ1003题
2012-03-07 21:19
344 查看
翻译:
若将一叠卡片放在一张桌子的边缘,你能放多远?如果你有一张卡片,你最远能达到卡片长度的一半。(我们假定卡片都正放在桌子上。)如果你有两张卡片,你能使最上的一张卡片覆盖下面那张的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;
}
若将一叠卡片放在一张桌子的边缘,你能放多远?如果你有一张卡片,你最远能达到卡片长度的一半。(我们假定卡片都正放在桌子上。)如果你有两张卡片,你能使最上的一张卡片覆盖下面那张的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;
}
相关文章推荐
- POJ 1003解题报告
- POJ 1003 Hangover and 1004 Financial Management
- POJ 1003 Hangover
- POJ 1003
- poj 1003 Java
- POJ 1003 Hangover - 搜索算法 - 二分查找法
- Hangover(poj 1003)
- POJ1003 Hangover
- POJ 1003 Hangover GCC编译
- poj_1003——Hangover
- poj-1003
- POJ-1003-Hangover
- poj 1003 Hangover
- poj1003 Hangover
- 【POJ】1003. Hangover
- (POJ 1003)Hangover
- poj1003--Hangover
- POJ-1003-Hangover
- poj-1003-Hangover
- poj 1003Hangover