求助 全是tle

P2669 [NOIP2015 普及组] 金币

水户洋平_ @ 2020-08-23 10:10:35

为什么全是TLE啊,我逻辑有问题吗还是...蒟蒻无地自容

#include<iostream>
using namespace std;
int main()
{
    long long n,ans=0,b=0;
    cin>>n;
    for(int i=1;;i++){
        for(int y=1;y<=i;y++){
            ans+=i;
            b++;
            if(b>=n){
                break;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
 } 

by 水户洋平_ @ 2020-08-23 10:11:29

坐等大佬指点迷津


by Eon_Sky @ 2020-08-23 10:12:19

超时跟逻辑有啥关系,大部分时候是方法问题


by Eon_Sky @ 2020-08-23 10:13:03

不过确实逻辑错了/youl


by Steven__Chen @ 2020-08-23 10:13:22

你死循环了啊


by Eon_Sky @ 2020-08-23 10:13:30

明明一层循环就够了


by Davi_zhao @ 2020-08-23 10:14:11

@水户洋平_ 没太看懂代码 但是你的这个break只是跳出了y这个循环吧,外循环不还是无限吗


by HFAKzzy @ 2020-08-23 10:14:38


by brady_liu @ 2020-08-23 10:15:43

死循环了。

话说你不运行一下程序再交吗


by 水户洋平_ @ 2020-08-23 10:23:06

@键盘真香 emm 疏忽了,但是我把打印和return 0放到break位置就好了,两层循环可以用


by 水户洋平_ @ 2020-08-23 10:26:59

纠正了

#include<iostream>
using namespace std;
int main()
{
    int n,a=0,b=0;
    cin>>n;
    for(int i=1;;i++){
        for(int y=1;y<=i;y++){
            a+=i;
            b++;
            if(b>=n){
                cout<<a<<endl;
                return 0; 
            }
        }
    }

 } 

| 下一页