由于当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币,故我们可以利用这一点规律,使用i表示获取的金币,如果n大于i,那么就使s累加i*i,并且将n减去i,反之则将s累加n*i,即可退出循环。
#include<iostream>
using namespace std;
int main()
{
int n,s=0;
cin>>n;
for(int i=1;n>0;i++)
{
if(n>i)
s+=i*i;
else
s+=n*i;
n-=i;
}
cout<<s<<endl;
return 0;
}