2 条题解
-
1
模拟长除法代码
#include <bits/stdc++.h> using namespace std; int main() { long long N, K; cin >> N >> K; long long m = 0; long long power = 1; // 找到最大的power使得 K * power <= N while (power * K <= N) { power *= 2; } // 逐位检查每一位是否为1 while (power > 0) { // 尝试将当前位设为1,并检查是否满足条件 if (K * (m + power) <= N) { m += power; // 当前位可以设为1 } power /= 2; // 处理下一位 } cout << m * K << endl; return 0; }
- 1
信息
- ID
- 450
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 6
- 标签
- 递交数
- 108
- 已通过
- 37
- 上传者