1774 - 级数求和

通过次数

0

提交次数

0

时间限制 : 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);
	}
}