您的位置:首页 > 其它

NOIP2002普及组第一题【级数求和】题解 (普及山东tyd)

2018-02-07 14:18 483 查看
一道水题,我就不想多说什么了。

//题目洛谷链接
 https://www.luogu.org/problemnew/show/P1035

//题目Openjudge链接  http://noi.openjudge.cn/ch0105/27/

题目描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入输出格式
输入格式:
一个正整数K。
输出格式:
一个正整数N。
输入输出样例
输入样例#1:1 输出样例#1:2
//代码及其讲解
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int k,i=0;//注意i首先要初始化为0,若初始化为1,则其下循环语句要做出相应的改变。
double Sn=0;//累加和存储变量,注意在之后会出现小数,所以应当定义一个浮点类型的变量。
cin>>k;
while(Sn<=k)//循环条件。
{
i++;
Sn+=1*1.0/i;//注意计算机在作除法运算时只保留整数部分,因此应先将被除数或除数乘1.0。
}
cout<<i<<endl;
return 0;
}
总结:noip普及组的题不会很难,但必须扎实扎实再扎实,多关注自己第一次提交的分数,做到尽量一次AC.
该题我本人喜欢运用for循环来解,但毕竟是while循环语句的习题,所以不附代码。
如有疑问请咨询我的qq:2039315696.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: