P1035 [NOIP2002 普及組] 級數求和
題目描述
已知:S_n= 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}S**n=1+21+31+…+n1。顯然對于任意一個整數 kk,當 nn 足夠大的時候,S_n>kS**n>k。
現給出一個整數 kk,要求計算出一個最小的 nn,使得 S_n>kS**n>k。
輸入格式
一個正整數 kk。
輸出格式
一個正整數 nn。
輸入輸出樣例
輸入 #1複制
1
輸出 #1複制
2
說明/提示
【資料範圍】
對于 100%100% 的資料,1\le k \le 151≤k≤15。
package com.kk.luogu;
import java.util.Scanner;
//級數求和
public class P1035 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int nums=scanner.nextInt();
System.out.println(SummationOfSeries(nums));
}
public static int SummationOfSeries(int num){
double sum=0;
int i=1;
int tmp=0;
for ( i = 1; i < 10005; i++) {
sum+=(double) 1/i;
if(sum>num) {
tmp=i;
break;
}
}
return tmp;
}
}
#include<bits/stdc++.h>
using namespace std;
int main() {
int k,n=0;
cin>>k;
for(double Sn=0;Sn<=k;++n,Sn+=1.0/n);
cout<<n;
return 0;
}