题目描述

已知: 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;
}