级数求和

P1035 [NOIP2002 普及组] 级数求和

曹砚刚 @ 2019-09-11 07:46:54

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int k;
    long long n=0,i;
    float sum=0;
    cin>>k;
    while(sum<=k)
    {
        n++;
        sum=0;
        for(i=1;i<=n;i++)
        sum+=1.0/i;
        if(sum>k) printf("%lld",n);
    }
    return 0;
} 

by 曹砚刚 @ 2019-09-11 07:48:34

为什么通过的时候,是60分,有两个点不能通过,显示 Time Limit Exceeded.这是为什么呢?


by ZhuMingYang @ 2019-09-11 07:54:41

@曹砚刚 k=15 n会很大 你这样肯定会TLE


by 曹砚刚 @ 2019-09-11 08:24:02

@ZhuMingYang 你好,谢谢回复。 看来这样是while循环并不可行,对吗?是因为while循环要重新开始很多次吗?


by ZhuMingYang @ 2019-09-11 08:28:36

n每次+1 sum只会+1.0/n

所以没必要每次都算前面的一遍


by 满是心酸 @ 2019-10-03 12:39:02

@曹砚刚 写超时了吧?


|