题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天
(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚 金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式 会一直这样延续下去:当连续 N 天每天收到 N 枚金币后,骑士会在之后的连续 N+1 天 里,每天收到 N+1 枚金币。
请计算在前 K 天里,骑士一共获得了多少金币。
输入
输入文件只有 1 行,包含一个正整数 K,表示发放金币的天数。
输出
输出文件只有 1 行,包含一个正整数,即骑士收到的金币数。
样例输入
【输入样例1】
6
【输出样例1】
14
【输入输出样例 1 说明】 骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,
每天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币。
样例输出
【输入样例2】
1000
【输出样例2】
29820
提示
对于 100%的数据,1≤K≤10,000。
这题非常简单,直接上代码:
#include <bits/stdc++.h>//万能头
using namespace std;
int main(){
int day,houday=1,mtjb=1,jinbizong=0;//day是一共有几天,houday是每组中除了第一天后的每天,mtjb是每天得到的金币,jinbizong是金币总和
cin>>day;//输入天数
for(int i=1;i<=day;i++){
//TODO
jinbizong+=mtjb;//计算金币总和
houday--;//每组中除了第一天后的每天在减少
if(houday==0){//如果每组中除了第一天后每天没了
//TODO
mtjb++;//每天得到的金币增加
houday=mtjb;//每组中除了第一天后每天等与每天得到的金币
}
}
cout<<jinbizong;//输出金币总数
return 0;//完美结束
}
那位大佬有更简便的方法,欢迎私信!