思路
虽然我有一篇文章摘抄了《王道机试指南》的大整数类,但我发现用它取余操作总是不对,无奈自己写了一个,思路不难,就是模拟正常列竖式除法。
代码实现
#include <iostream>
using namespace std;
int main() {
int big[30]; //存放大整数
string input; //存放输入
while (cin >> input) {
if (input == "-1") {
break;
}
int len = input.length(); //大整数长度
bool flag = false; //是否存在k
for (int i = 0; i < len; ++i) {
big[i] = input[i] - '0';
}
for (int k = 2; k < 10; ++k) {
int remain = 0; //存放余数
int tag = 0; //从前之后大整数的位数下标
while (tag < len) {
int current = big[tag] + remain * 10;
remain = current % k;
tag++;
}
if (remain == 0) {
flag = true;
cout << k << " ";
}
}
if (!flag) {
cout << "none\n";
}
cout << endl;
}
}