POJ 1003
2014-05-14 21:54
197 查看
这个题目是算无穷发散数列有多项时,其值刚大于输入的值。这题一开始想复杂了,想通过通式来计算,这样只需要算一次自然指数与1次加法,两次减法就可以了。
但是根据这样的思路写出来的程序,OJ判断WA,于是用for循环来做,虽然比较土,不过AC,AC代码如下:
C++版本:
#include <iostream>
using namespace std;
int main()
{
float in = 0;
while(true)
{
int i=1;
float sum=0;
cin >> in;
if(in!=0.00)
{
for(;sum<in;i++)
{
sum += 1.00/(i+1);
}
cout << i-1 <<" "<<"card(s)"<<endl;
}
else
{
break;
}
}
return 0;
}
但是根据这样的思路写出来的程序,OJ判断WA,于是用for循环来做,虽然比较土,不过AC,AC代码如下:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class poj1003 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); while (true) { String tmp = in.readLine().trim(); if(!tmp.equals("0.00")){ float result = Float.parseFloat(tmp); float sum = 0f; int i=1; for(;sum<result;i++){ sum += 1f/(i+1); } System.out.println((i-1)+" card(s)"); }else{ break; } } } }
C++版本:
#include <iostream>
using namespace std;
int main()
{
float in = 0;
while(true)
{
int i=1;
float sum=0;
cin >> in;
if(in!=0.00)
{
for(;sum<in;i++)
{
sum += 1.00/(i+1);
}
cout << i-1 <<" "<<"card(s)"<<endl;
}
else
{
break;
}
}
return 0;
}
相关文章推荐
- [POJ 1003] Hangover C++解题
- poj 1003
- POJ 1003 Hangover GCC编译
- POJ 1003 Hangover
- POJ 1003.Hangover
- 【poj】1003
- 【POJ】1003 Hangover
- POJ 1003 Hangover
- POJ1003解题报告
- poj 1003:Hangover
- 「POJ - 1003」Hangover
- POJ 1003--Hangover
- POJ 1003
- POJ 1003 Hangover
- POJ 1003 Hangover
- POJ1003 Hangover
- HDU 1482/ZOJ 1184/FOJ 1003/POJ 1013 Counterfeit Dollar
- POJ1003题
- poj 1003 Hangover 二分查找不大于x的最大值
- POJ1003 POJ1004 POJ1005 POJ1006 POJ1007