【P1035】级数求和

题目描述

已知: Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数 K ,当 n 足够大的时候, Sn​ 大于 K 。

现给出一个整数 K(1≤k≤15 ),要求计算出一个最小的 n ;使得 Sn>K。

输入输出格式

输入格式:

一个正整数 K

输出格式:

一个正整数 N

最开始用的是float来表示Sn,结果有些测试(大数)没有通过,

#include<iostream>
int main()
{
	int k;
	std::cin >> k;
	float s = 0.0;
	int i = 1;
	for (i = 1;s<=k ; i++)
		s += 1.0 / i;

	std::cout << i-1;
	return 0;
}

于是改成double,通过。

#include<iostream>
int main()
{
	int k;
	std::cin >> k;
	double s = 0.0;
	int i = 1;
	for (i = 1;s<=k ; i++)
		s += 1.0 / i;

	std::cout << i-1;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41068877/article/details/81152155