题目描述
已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
输入格式
一个非负整数c,c的位数≤30。
输出格式
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a[400005],c[400000];
int div(string as,int b){
string cs;
int al=as.size();
int cl=al;
for(int i=1;i<=al;i++){
a[i]=as[i-1]-'0';
}
int r=0;
for(int i=1;i<=al;i++){
r=r*10+a[i];
c[i]=r/b;
r%=b;
}
return r;
}
int f=0;
int main(){
string k;
cin>>k;
for(int i=2;i<=9;i++){
if(div(k,i)==0){
cout<<i<<" ";
f=1;
}
}
if(f==0){
cout<<"none";
}
return 0;
}