题目描述:
已知:S_n= 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}Sn=1+21+31+…+n1。显然对于任意一个整数 kk,当 nn 足够大的时候,S_n>kSn>k。
现给出一个整数 kk,要求计算出一个最小的 nn,使得 S_n>kSn>k。
输入格式
一个正整数 kk。
输出格式
一个正整数 nn。
输入输出样例
输入
1
输出
2
说明/提示
【数据范围】
对于 100\%100% 的数据,1\le k \le 151≤k≤15。
【题目来源】
NOIP 2002 普及组第一题
import java.util.Scanner;
public class 级数求和 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int k = sc.nextInt();
int n=1;
double s =0;
while(true)
{
s+=1.0/n;// 一定要是1.0 1的话不出结果
if (s>k)
{
System.out.println(n);
break;
}
n++;
}
}
}
代码解释:不建议使用for循环,因为n题目中没给具体数。用while循环简单方便。