http://noi.openjudge.cn/ch0105/45/
http://ybt.ssoier.cn:8088/problem_show.php?pid=1969
方法一
#include <bits/stdc++.h>
using namespace std;
int k,n=1,coin=0,i;
int main( void )
{
cin>>k;
for(i=1;i<=k;i++)
{
//金币数等于每天的收到的金币数
coin+=n;//每天的金币数增加的数量
if(i==n*(n+1)/2)
{
n++;
}
}
cout<<coin<<endl;
return 0;
}
方法二
//通用头文件
#include <bits/stdc++.h>
//名字空间
using namespace std;
int n,ans=0,days=0;
int main( void )
{
int i,j;
cin>>n;
for(i=1;;i++)
{
//连续j天,每天得到i个金币
for(j=1;j<=i;j++)
{
//累加金币数
ans+=i;
//总天数
days++;
if(days==n)
{
cout<<ans<<endl;
exit(0);
}
}
}
return 0;
}
python3代码
https://blog.csdn.net/qq872890060/article/details/121424274
k = int(input())
n,m = 1,0
while k > 0:
k -= n
if k > 0:
m += n*n
n += 1
else:
m += n*(k+n)
print(m)