专栏文章

P2669 [NOIP2015 普及组] 金币 题解

P2669题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqnn15z
此快照首次捕获于
2025/12/04 07:45
3 个月前
此快照最后确认于
2025/12/04 07:45
3 个月前
查看原文

题意

工资发放规则如下:nn 天每天收到 nn 枚金币后,骑士会在之后的连续 n+1n+1 天里,每天收到n+1n+1 枚金币。

思路

使用 while 循环,用一个变量 mm 计是第几波发工资,如果当前的天数不够 mm ,则用总天数直接乘以 mm ,直接将天数清零,如果总天数够 mm ,加上 mm 的平方,为 mm 天乘以每一天的工资 mm ,将天数减去 mm

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int main() {
	int a = 0;
	int day;
	cin >> day;
	int m = 1;计本次工资是第几波
	while (day != 0) {//天数未满时
		if (day < m) {//天数不够时
			a = a + day * m;//加上这些天的工资
			day = 0;//天数清零,工作做完
		} else {//天数够了
			day -= m;//天数减去 m
			a = a + m * m;//加上这些天的工资
		}
		m = m + 1;//波数加一
	}
	cout << a; //输出总工资数
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...