級數求和(C++)


題目描述

已知:Sn=1+1/2+1/3++1/n。顯然對於任意一個整數K,當n足夠大的時候,Sn大於K。

現給出一個整數K(1≤K15),要求計算出一個最小的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的值會變為整數類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM