27:级数求和
总时间限制: 1000ms 内存限制: 65536kB
描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入
一个整数K。
输出
一个整数n。
样例输入
1
样例输出
2
解法一:
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int n,k,i=1;
k=in.nextInt();
double sum=0;
while(sum<=k){
sum=sum+(double)1/i;
//int与int相除不能直接转化为double,需要使用(double)1/i强制转换
//不然会出现丢失小数位情况;
i++;
}
n=i-1;
System.out.println(i-1);
}
解法二:
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int n,k,i=1;
k=in.nextInt();
double sum=0;
for(i=1;;i++) {
sum=sum+(double)1/i;
if(sum>k) {
n=i;
break;
}
}
System.out.println(n);
}
}