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