级数求和

测试数据来自 az0099/1001

Background

Special for beginners, ^_^

Description

已知:Sn=1+1/2+1/3+...+1/n。显然对于任意一个整数k,当n足够大的时候,Sn>k。现给出一个整数k,要求计算出一个最小的 n,使得Sn>k。

Format

Input

一个正整数k。

Output

一个正整数n。

Sample 1

Input

1

Output

2

Limitation

1s, 1024KiB for each test case.

Hint

C Code

#include<stdio.h>
int
main(){
    int k,n;
    double sn=0.0;
    scanf("%d",&k);
    for(n=1;;n++){
     sn+=1.0/n;
     if(sn>k*1.0)
      break;
    }
    printf("%d",n);
    return 0;
}

C++ Code

#include<cstdio>
using namespace std;
double search(double,double);
double n,t=1;
double print(double);
int main()
{
    cin>>n;
    search(n,0);//搜索模块。
}
double search(double x,double sum)//下面就是调用的深搜模块。
{
        sum=sum+1/t;
        t++;
        if(sum>n) print(t);//调到输出的子程序
        else return search(x,sum);//深搜
    }
double print(double q)
{
    cout<<q-1;
    return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
double sum=0;
int main()
{
    double n;
    cin>>n;
    for(double i=1;i<=1000000;++i)//要小心范围,小了是不可以的。
    {
        sum=sum+1/i;
        if(sum>=n)
        {
            cout<<i;
            return 0;
        }
    }
}

Python Code

b=1
s=0
a=input()
k=int(a)
while s <= k:
    s+=1/b
    b+=1
b-=1
print(b)
def Superposition(n):
    sum = 1.0
    return sum / n

def main():
    k = input().split()
    n = 0
    sum = 0.0
    while (sum <= float(k[0])):
        n += 1
        sum += Superposition(n)
    print(n)
main()

信息

ID
1000
难度
7
分类
(无)
标签
(无)
递交数
168
已通过
38
通过率
23%
上传者