描述
已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
输入描述
一个非负整数c,c的位数≤30。
输出描述
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
用例输入 1
30
用例输出 1
2 3 5 6
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
char s[101];
int a[101]={},b[101]={},c[101]={};
cin>>s;
int x=strlen(s);
for(int i=0;i<x;i++){
c[i]=s[i]-'0';
}
int flag=0;
for(int k=2;k<=9;k++){
for(int i=0;i<x;i++){
a[i]=c[i];
}
for(int i=0;i<x;i++){
b[i]=a[i]/k;
a[i+1]+=(a[i]%k)*10;
}
if(a[x-1]%k==0){
cout<<k<<" ";
flag=1;
}
}
if(flag==0){
cout<<"none";
}
return 0;
}