解题思路:
很水的模拟题,只要按照题目中说的要求去写就好了,慢慢来,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; }