c求助康康哪错了

P2669 [NOIP2015 普及组] 金币

3145779708nb @ 2022-10-24 23:59:35


int main()
{
    int i=1 ; int sum;int k;int m,j=0;
    scanf("%d",&k);

    while(i*(i+1)/2<k)
    {
     i++;
    }
    if(i*(i+1)/2==k)
       {

        for(m=1;m<=i;m++)
    {
      j=j+m*m;
    }
    sum=j;}
    if(i*(i+1)/2>k)
      {
          for(m=1;m<=i-1;m++)
     {
         j=j+m*m;
     }
     sum=j+(i*(i+1)/2-k)*i;
      }
      printf("%d",sum);
    return 0;
}

by Pjcgs @ 2022-11-27 15:27:29

参考我的,无须那么复杂

#include<iostream>
using namespace std;
int main()
{
    int i,k,s=0,n=0,m;
    cin>>k;
    for(i=1;i<=k;i++)
    {
        s+=i*i;
        n+=i;
        if(n>=k) break;
    }
    if(n!=k) s-=(n-k)*i;
    cout<<s;
    return 0;
}

|