1 条题解
-
0
正确代码:
#include <bits/stdc++.h> using namespace std; // 动态数组 a 用于存储高精度数字的各位 vector<int> a; // 输入的字符串 string str; // 高精度除法函数:计算高精度数能否被 x 整除 int divi(int x) { // a[0] 存储数字的长度,i 从 a[0] 开始 int i = a[0], res = 0; // 从最高位开始进行除法 while (i > 0) { res *= 10; // 移动一位 res += a[i]; // 将当前位加到结果中 res %= x; // 对 x 取模,保持余数 i--; // 移动到下一位 } return res; // 返回余数 } int main() { int len; // 存储输入字符串的长度 bool flag = false; // 用于判断是否能整除,如果能整除就输出,否则输出 "none" // 输入一个字符串形式的数字 cin >> str; // 获取字符串长度 len = str.size(); // 调整动态数组大小,a[0] 保存数字的长度,a[1..len] 保存数字的各个数字 a.resize(len + 1); int k = 1; // k 用于从数组的第一个有效位置开始存储数字 // 将字符串反向存入数组 a 中,a[k] 存储数字的每一位 for (int i = len - 1; i >= 0; i--) { a[k] = str[i] - '0'; // 将字符转换为对应的整数 k++; // 移动到下一个位置 } // a[0] 存储数字的长度 a[0] = len; // 判断 2 到 9 中的每个数字是否能整除输入的高精度数 for (int i = 2; i <= 9; i++) { if (divi(i) == 0) { // 如果能整除,余数为 0 flag = true; // 设置 flag 为 true,表示找到了能整除的数 cout << i << " "; // 输出能整除的数 } } // 如果没有找到能整除的数,输出 "none" if (!flag) cout << "none" << endl; return 0; }
- 1
信息
- ID
- 651
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 12
- 已通过
- 6
- 上传者