1774 - 级数求和
时间限制 : 1 秒
内存限制 : 128 MB
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
题目输入
键盘输入 k
题目输出
屏幕输出 n
输入/输出样例
输入格式
1
输出格式
2
C++解答
#include <iostream> #include <fstream> using namespace std; int n; ifstream fin("p1.in"); ofstream fout("p1.out"); double k, s = 0.0; //#define cin fin //#define cout fout main() { cin >> k; fin.close(); for (n = 1; s <= k; ++n) s += 1.0 / (double)n; cout << --n; fout.close(); // for(;;); }
Java解答
import java.util.Scanner; public class Main { static Scanner inputScanner=new Scanner(System.in); public static void main(String[] argStrings) { int k=inputScanner.nextInt(); double Sn=0; int n=0; for (double i = 1; Sn<=k; i++) { Sn+=1/i; n=(int)i; } System.out.println(n); } }