题目链接:https://ac.nowcoder.com/acm/contest/94570/E
国王将大米作为工资,发放给忠诚的骑士。第一天,骑士收到一粒大米;之后两天(第二天和第三天),每天收到两粒大米;之后三天(第四、五、六天),每天收到三粒大米;之后四天(第七、八、九、十天),每天收到四粒大米……;这种工资发放模式会一直这样延续下去:当连续连续n天每天收到n粒大米后,骑士会在之后的连续n+1天里,每天收到n+1粒大米。
解析:
根据题目提示:
我们只要计算出需要代入公式的 t 为多少看,以及还剩余多少天
int t = 0;
for(int i = 1;i<=n;i++)
{
t++;
n-=i;
}
while i < n:
n -= i
i = i + 1
t = t + 1
计算得到的 n 为剩余的天数, t 为需要代入公式的值
因此,可得到代码;
#include <iostream>
using namespace std;
const int N = 1e4+10;
int main(){
int n;
cin>>n;
int t = 0,nn = n;
for(int i = 1;i<=nn;i++)
{
t++;
nn-=i;
}
unsigned long long res = t * (t+1);
res = res * (2*t+1)/6;
res = res + (t+1)*nn;
cout<<res;
return 0;
}
n = input()
t = 0
nn = int(n)
i = 1
while i < nn:
nn -= i
i = i + 1
t = t + 1
res = t * (t+1) * (2*t+1)/6+(t+1)*nn
print(int(res))