请各位大佬指教一番

P2669 [NOIP2015 普及组] 金币

飞月无雪 @ 2019-07-28 12:12:44

#include<iostream>
using namespace std;
int main()
{
     int n=1,i,a[99999],s,j,t=0,o=1;
    cin>>s;   
    for(i=1;i<=200;i++)
    {
        for(int x=1;x<=n;x++)
        {
            a[o++]=n;           
        }n++;           
    }       
    for(j=1;j<=s;j++)
    {
        t=t+a[j];
    }
    cout<<t<<endl;
    return 0;
 } 

by Skyjoy @ 2019-07-28 12:28:00

请注释一下


by Bbaka @ 2019-07-28 12:28:08

呃呃呃,你这个代码好像没问题呀。。。


by Skyjoy @ 2019-07-28 12:33:29

附AC代码:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    int day;
    long long sum=0;
    cin>>day; 
    int i;
    for(i=1;i<=day;i++){
        if(day>=i){
            day=day-i;
            sum+=i*i;//第i个周期就叠加
        }
        else{
            break;
        }
    }
    sum+=day*i;//加上最后剩下的
    cout<<sum;
    return 0;
}

by Plus_Ultra @ 2019-07-28 12:36:25

@飞月无雪 SO。。。是WA了吗还是怎样


by Plus_Ultra @ 2019-07-28 12:37:01

t要定义成long long类型


by 飞月无雪 @ 2019-07-28 21:30:21

太暴力了,耗时长 一开始定义i<=100,90分,然后调为i<=200才AC


by 飞月无雪 @ 2019-07-28 21:31:10

#include<iostream>
using namespace std;
int main()
{
     int n=1,i,a[99999],s,j,t=0,o=1;
    cin>>s;   
    for(i=1;i<=200;i++)
    {
        for(int x=1;x<=n;x++)
        {
            a[o++]=n;//暴力算出一堆的数           
        }n++;           
    }       
    for(j=1;j<=s;j++)
    {
        t=t+a[j];//要到哪就求到哪
    }
    cout<<t<<endl;
    return 0;
 } 

|