1171:大整数的因子
【题目描述】
已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
【输入】
一个非负整数c,c的位数≤30。
【输出】
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
分析:
代码:
#include <iostream>
using namespace std;
const int LN=31;
int a[LN];
bool modnum(int a[],int n){
int x=0;
for(int i=1;i<=a[0];i++)
x=(x*10+a[i])%n;//对余数处理
return x;
}
int main(){
string s;
cin>>s;
int d=0;
a[0]=s.length();
for(int i=1;i<=a[0];i++) a[i]=s[i-1]-'0';
for(int i=2;i<=9;i++)
if(!modnum(a,i)) {
cout<<i<<" ";d=1;
}
if(!d) cout<<"none";
return 0;
}
结果:
【输入样例】
30
【输出样例】
2 3 5 6
【来源】
No