1 条题解
-
0
📝 题目大意
给定体力值 和每次攻击减少的体力值 ,求最少需要多少次攻击才能使体力值降至 或以下。
💡 解题思路
- 题目分析:本质是求 (向上取整)。数据范围 ,需要使用
long long(64 位整数),直接循环模拟会超时。 - 算法推导:整数除法默认向下取整,向上取整的等价公式为 (整数除法)。即
ans = (A + B - 1) / B。 - 边界与细节:
- 当 恰好能被 整除时(如 ),,结果正确。
- 当 不能被 整除时(如 ),,结果正确。
- 注意使用
long long而非int,否则大样例( 级别)会溢出导致 WA。
⏱️ 复杂度分析
- 时间复杂度:,仅一次除法运算。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include <iostream> using namespace std; int main() { long long A, B; // 64 位整数,防止溢出 cin >> A >> B; long long ans = (A + B - 1) / B; // 向上取整:ceil(A/B) cout << ans << endl; return 0; } - 题目分析:本质是求 (向上取整)。数据范围 ,需要使用
- 1
信息
- ID
- 711
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者