#6823. 使命召唤
使命召唤
使命召唤:特种兵训练积分
题目描述
在《使命召唤》训练模式中,一名特种兵正在进行连续训练任务。
系统会记录每天获得的训练积分。
第1天完成训练任务时,获得:
303 点积分
从第2天开始,由于训练难度提升:
每天获得的基础积分都会比前一天:
增加50点
但是训练系统还有一个特殊奖励规则:
如果当天计算出的积分:
能够被5整除
那么系统会额外奖励:
20点积分
例如:
第2天:
基础积分:
303 + 50 = 353
因为:
353不能被5整除
所以最终积分:
353
第3天:
基础积分:
353 + 50 = 403
因为:
403不能被5整除
所以最终积分:
403
现在给出训练天数 n,请计算:
第 n 天最终获得的积分是多少。
注意:
- 不需要计算累计积分;
- 不需要考虑军衔等级;
- 不需要考虑武器解锁数量;
- 只需要输出第 n 天的最终积分。
输入格式
输入一个整数:
n
表示训练天数。
输出格式
输出一个整数:
表示第 n 天最终获得的积分。
数据范围
1 ≤ n ≤ 100000
样例输入1
1
样例输出1
303
样例解释
第1天初始积分为:
303
没有增加,也不会触发奖励。
样例输入2
2
样例输出2
353
样例解释
第2天:
基础积分:
303+50=353
因为:
353 % 5 != 0
所以最终:
353
样例输入3
5
样例输出3
503
样例解释
每天计算:
| 天数 | 计算过程 | 是否奖励 | 最终积分 |
|---|---|---|---|
| 1 | 303 | 否 | 303 |
| 2 | 303+50=353 | 353 | |
| 3 | 353+50=403 | 403 | |
| 4 | 403+50=453 | 453 | |
| 5 | 453+50=503 | 503 |
所以:
503
但是这个样例仍然没有触发奖励。
为了让学生验证条件,建议增加一个奖励触发样例:
样例输入4
6
样例输出4
573
样例解释
第6天:
基础积分:
503+50=553
553不能被5整除。
所以:
553
(这里仍未触发)
发现这个初值会导致奖励一直不触发,因为:
303 每天 +50:
个位数字永远是:
3
不会出现5的倍数。
因此更合理的设计是:
修改初始值
第1天:
300点积分
每天增加:
53点
奖励:
能被5整除 +20
这样:
| 天数 | 基础计算 | 奖励 | 最终 |
|---|---|---|---|
| 1 | 300 | - | 300 |
| 2 | 353 | 无 | 353 |
| 3 | 406 | 406 | |
| 4 | 459 | 459 | |
| 5 | 512 | 512 | |
| 6 | 565 | +20 | 585 |
这样样例:
输入:
6
输出:
585
| 测试点编号 | n <= | 特殊性质 | 设计目的 |
|---|---|---|---|
| 1 | 初值 | 检查 dp[1] = 303 是否直接输出 |
|
| 2, 3 | 3 | 连续小值 | 检查第一次、第二次递推 |
| 4, 5 | 11 | 小规模相邻值 | 检查普通递推与相邻输入差值 |
| 6 | 100 | 百位规模 | 覆盖正常循环次数 |
| 7, 8 | 1000 | 千位相邻边界 | 检查较大普通规模与相邻值 |
| 9 | 50000 | 大规模 | 检查较长循环下结果是否仍为线性公式 |
| 10 | 100004 | 数组安全上界 | 覆盖程序可安全访问的最大 n |