解题思路:
很水的模拟题,只要按照题目中说的要求去写就好了,慢慢来,for( i = 1;;i++ )这个技巧要学会,但是什么时候结束这个for循环呢,这就要看你怎么调整你的姿势了。。。
QAQ,按照我的来就好了,两种情况下会打破for循环。。。
1. i > 500000。
2.找到了最小的n。
好了,看代码吧。
代码:
# include<cstdio>
# include<iostream>
using namespace std;
const double eps = 1e-8;
int main(void)
{
int x;
while ( cin>>x )
{
int flag = 0;
int n;
double sum = 0;
for ( int i = 1;;i++ )
{
sum+=(1.0/i);
if ( i > 5000000 )
{
if ( sum-x < eps )
{
flag = 1;
break;
}
}
if ( sum >= x )
{
n = i;
break;
}
}
if ( flag )
{
cout<<"Error!"<<endl;
}
else
{
cout<<n<<endl;
}
}
return 0;
}