P2669 [NOIP2015 普及组] 金币

发布时间 2023-09-16 11:41:24作者: 夜未央111

题目背景

NOIP2015 普及组 T1

题目描述

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 nn 天每天收到 nn 枚金币后,骑士会在之后的连续 n+1n+1 天里,每天收到 n+1n+1 枚金币。

请计算在前 kk 天里,骑士一共获得了多少金币。

输入格式

一个正整数 kk,表示发放金币的天数。

输出格式

一个正整数,即骑士收到的金币数。

输入输出样例

输入 #1
6
输出 #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;
}