题目描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数 k,当 n 足够大的时候,Sn>k。
现给出一个整数 k,要求计算出一个最小的 n,使得 Sn>k。
输入格式
一个正整数 k。
输出格式
一个正整数 n。
输入
1
输出
2
说明/提示
【数据范围】
对于 100% 的数据,1≤k≤15。
题解:
注意使用double要加.0,比如1/2要换做1.0/2,正常1/2会当作div等于0,要转换为double型。
import java.util.Scanner;
public class P1035NOIP2002普及组级数求和 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int ans=0,i=1;
double k=in.nextDouble(),sum=0;
while(true) {
sum+=(1.0/i);
if (sum>k) {
ans=i;
break;
}
i++;
}
System.out.println(ans);
}
}