題目描述
已知:Sn=1+1/2+1/3+…+1/n。顯然對於任意一個整數K,當n足夠大的時候,Sn大於K。
現給出一個整數K(1≤K≤15),要求計算出一個最小的n;使得Sn>K。
輸入輸出格式
輸入格式:
一個正整數K
輸出格式:
一個正整數N
輸入樣例:1 輸出樣例:2
答案代碼:
#include<iostream>
using namespace std;
int main(){
double S=0;
int K,n=0;
cin>>K;
do{
n++;
S+=1.0/n;
}while(S<=K);
cout<<n<<endl;
return 0;
}
代碼思路不是很難想到,利用do while循環是比較容易想到的解法(代碼中的S為題中Sn);
但其中需要注意S再累加時會加上分數,所以在申聲明S變量時應該使用double類型;
其次分數應用1.0/n表示,否則S的值會變為整數類型。