1 条题解
-
0
高精度除法(高精除以单精)(High Precision Division I) 题解
思路分析
模拟竖式除法:从高位到低位逐位扫描大整数 ,用
long long维护当前余数rem = rem * 10 + (c - '0'),当前位商为rem / b,然后令rem %= b(注意 时rem * 10最大约 ,必须用long long!)。最后去除结果的前导零;若全部为0(如 )则保留一个"0"。时间复杂度 。参考代码
#include <iostream> #include <string> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string a; long long b; if (!(cin >> a >> b)) return 0; string q; long long rem = 0; for (char c : a) { rem = rem * 10 + (c - '0'); long long d = rem / b; rem %= b; if (!q.empty() || d > 0) q.push_back(char('0' + d)); } if (q.empty()) q = "0"; cout << q << "\n"; return 0; }
- 1
信息
- ID
- 8571
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者