题目背景
NOIP2015 普及组 T1
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 nn 天每天收到 nn 枚金币后,骑士会在之后的连续 n+1n+1 天里,每天收到 n+1n+1 枚金币。
请计算在前 kk 天里,骑士一共获得了多少金币。
输入格式
一个正整数 kk,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
输入输出样例
输入 #16输出 #1
14输入 #2
1000输出 #229820
解题思路
模拟,n,q,c,s n表示天数,q表示还剩多少天,c表示当天获得的金币数,s表示金币和
循环遍历天数,s加上当前天数所得金币数,然后q--,if 天数为0时更新c和q;
#include<iostream> #include<cstdio> using namespace std; int main() { int n,q,s=0,c; cin>>n; c=q=1; for(int i=1;i<=n;i++){ s+=c; q--; if(q==0){ c++; q=c; } } cout<<s; }
标签:收到,NOIP2015,int,天数,P2669,金币,骑士 From: https://www.cnblogs.com/ywy1/p/17706508.html