信息学奥赛一本通T1087:while与do-while语句 级数求和

【题目描述】已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数k,当n足够大的时候,Sn大于k。现给出一个整数k(1≤k≤15),要求计算出一个最小的n,使得Sn>k。【输入】一个整数k【输出】一个整数n【输入样例】1【输出样例】2【源程序】 

信息学奥赛一本通T1087:级数求和

【题目描述】

已知: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()
{
    int k,n=1;
    double sum=1;

    cin>>k;
    while(sum<=k)
    {
        n++;//累加n的值
        sum+=1.0/n;//计算n项和
    }
    cout<<n<<endl;
    return 0;
}

 

信息学奥赛一本通T1087:while与do-while语句 级数求和 归属于 while与do-while语句,更多同类题解源程序见:while与do-while语句 和 级数求和

0 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章