「NOIP2002 普及组第一题 1.5.27」级数求和
题干:
已知:Sn=1+1/2+1/3+...+1/n。显然对于任意一个整数K,当n足够大时,Sn>K。
现给定出一个整数K(1<=K<=15),要求计算出一个最小的n,使得Sn>K。
思路:
审题一遍,题目主要是考查循环控制,且涉及一些思维logic。对于Sn>K这种,我们选择条件循环While,为了满足循环
条件和题干的要求,要在Sn>K的时候计算出最小的n,所以循环条件为Sn<K,以便在循环计算的时候刚Sn>K时求出n的
值。
代码:
1 #include <iostream> 2 3 using namespace std; 4 5 int main(){ 6 double n = 1,Sn=0; 7 int K; 8 9 cin>>K; 10 while (Sn < K){ 11 Sn += 1/n; 12 n++; 13 cout<<n<<endl; 14 } 15 16 return 0; 17 }
>>1 :INPUT
>>2 :OUTPUT