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

  • Post author:
  • Post category:其他



一道水题,我就不想多说什么了。


//题目洛谷链接

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.



版权声明:本文为qq_41697208原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。