国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 nn 天每天收到 nn 枚金币后,骑士会在之后的连续 n+1n+1 天里,每天收到 n+1n+1 枚金币。
请计算在前 kk 天里,骑士一共获得了多少金币。
输入格式
第一行一个整数k,表示天数。
输出格式
一个整数,表示答案。
样例输入
6
样例输出
14
样例说明
骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=141+2+2+3+3+3=14枚金币。
数据限制
对于100%100%的数据,保证1≤k≤1041≤k≤104。
#include<iostream>// 基
using namespace std;// 本
int main()// 框
{// 架
int k;//定义 k
int i = 0;//定义 i 等于 0
int sum = 0,n = 0;// 定义金币数等于 0 ,n 等于 0
cin >> k;//输入 k
while(n <= k)//循环
{
i = i + 1;// i 的值等于 i 加 1
sum = sum + i * i;//金币数等于金币数加 i 乘 i
n = ( i + 1) * i / 2;// n 的值等于 i 加 1 的和乘 i 整除 2
}
sum = sum - ( n - k ) * i;//金币数等于金币数减 n 减 k 的差乘 i
cout << sum << endl;//输出金币数,换行
return 0;//告诉计算机我安然无恙的结束了程序
}