1 条题解
-
0
真的转换成高精度表示法的写法
#include <bits/stdc++.h> using namespace std; string A, B; // a/13==c...r int aLen, a[105]; int cLen, c[105]; int r; int main() { cin >> A ; // 翻转并转成对应的整数 aLen = A.size(); for (int i = 0; i < aLen; i++) a[i] = A[aLen - 1 - i] - '0'; // 除以13 cLen = aLen; r = 0; for(int i = aLen - 1; i >= 0; i--) { r = r * 10 + a[i]; c[i] = r / 13; r = r % 13; } // 去掉前导 0 while (cLen > 1 && c[cLen - 1] == 0) cLen--; // 输出 for (int i = cLen - 1; i >= 0; i--) cout << c[i]; cout << '\n'; cout << r; return 0; }
更简单的写法
#include <bits/stdc++.h> using namespace std; string N; int ans[105]; // 商 int r; // 余数 int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N; r = 0; for (int i = 0; i < N.size(); i++) { // 之前的余数后面补上当前数字作为被除数 r = r * 10 + (N[i] - '0'); // 计算商 ans[i] = r / 13; // 更新余数 r = r % 13; } // 找到第一个非 0 的商的数位 // 如果到了最后一个数位还是 0,那要保留最后的位置 int pos = 0; while (ans[pos] == 0 && pos != (int)N.size() - 1) pos++; // 输出 for (int i = pos; i < N.size(); i++) cout << ans[i]; cout << "\n"; cout << r << "\n"; return 0; }
- 1
信息
- ID
- 13415
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 29
- 已通过
- 14
- 上传者