1 条题解
-
0
📝 题目大意
给定一个评级 (),评级每 分为一个区间,每个区间显示的
^数量递增。求最少需要提升多少评级,才能使显示的^数量比当前多一个。💡 解题思路
-
题目分析:评级区间为 、、,分别对应 、、 个
^。 最大为 ,下一个区间边界恰好是 的整数倍,因此无需考虑超过 的情况。 -
算法推导:要让
^数量增加,只需让评级达到下一个 的倍数即可:- 若 ,下一个边界是 ,需要提升
- 若 ,下一个边界是 ,需要提升
- 若 ,下一个边界是 ,需要提升
更一般地,答案为 ,即上取整到最近的 的倍数再减去 。
-
边界与细节: 保证 ,所以 ,不会出现答案为 的情况。直接按分支判断即可,无需额外处理。
⏱️ 复杂度分析
- 时间复杂度:,仅做常数次比较和运算。
- 空间复杂度:,仅使用一个整型变量。
💻 标准代码 (C++)
#include <iostream> using namespace std; int main() { int R; cin >> R; // 判断当前评级所在区间,输出到达下一个100的倍数所需的提升量 if (R < 100) { cout << 100 - R << endl; // 从 1~99 提升到 100 } else if (R < 200) { cout << 200 - R << endl; // 从 100~199 提升到 200 } else { cout << 300 - R << endl; // 从 200~299 提升到 300 } return 0; } -
- 1
信息
- ID
- 811
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者