应该超时了,哪位大佬告诉我怎么改

P1035 [NOIP2002 普及组] 级数求和

PengPeng2 @ 2024-08-11 11:28:34

#include<bits/stdc++.h>
using namespace std;
int fen(int n){
    double ans = 0.0;
    for(int i = 1; i <= n;i++){
        ans += 1.0 / n; 
    }
    return ans;
}
int main(){
    int k,sum = 0;
    cin>>k;
    for(int i = 1; i > 0;i++){
        if(fen(i) > k){
            sum = i;
            break;
        }
    }
    cout << sum;
    return 0;
}

by ___Segment___ @ 2024-08-11 11:41:52

emmmm……其实没必要每次都重新计算一次,若当前结果不够大,那么在下一次循环只要加上对应的那个分数就行了。


by xumingyang666 @ 2024-08-11 22:59:51

其实直接用sum暴力累加就行


by guoyanwei120223 @ 2024-08-13 17:14:48

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int k,n,cnt=0;
    cin>>k;
    for(double sn=0;sn<=k;cnt++,sn+=1.0/cnt);
    cout<<cnt;
    return 0;
}

求关


|