题目描述
已知: 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;
}