测试链接
总时间限制: 1000ms 内存限制: 65536kB
描述
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
输入
一个非负整数c,c的位数<=30。
输出
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
样例输入
30
样例输出
2 3 5 6
#include<iostream>
#include<cstring>
using namespace std;
string a;
int main(){
int n,i,j,len,m;
int num1[200];
getline(cin,a);
len=a.size();
memset(num1,0,sizeof(num1));
for(int i=0;i<len;i++)
{
num1[i]=a[i]-'0';
}
if(num1[0]==0||num1[0]==1&&len==1)
{
cout<<"none";
return 0;
}
if(len==1)
{
for(int j=2;j<=9;j++)
if(num1[0]%j==0)
cout<<j<<" ";
}
bool find=false;
for(j=2;j<=9;j++)
{
int s=0;
for(int i=0;i<len;i++)
{
m=(num1[i]+s)%j;
s=0;
if(m)
s=m*10;
}
if(m==0)
{
cout<<j<<" ";
find=true;
}
}
if(find==false)
cout<<"none";
return 0;
}