-
题目描述:
-
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.
-
输入:
-
若干个非负整数c,c的位数<=30
每行一个c,当c=-1时中止
(不要对-1进行计算!)
-
输出:
-
每一个c的结果占一行
1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
2) 若没有这样的k则输出"none"
#include<iostream>
#include<string.h>
using namespace std;
int main( )
{
char s[31];
int flag;
int i,j,n;
int a[10];
while(cin>>s)
{
flag=0;
int len=strlen(s);
if((len==2)&&(s[0]=='-')&&(s[1]=='1')) return 0;
for(i=2;i<=9;++i)
{
n=0;
for( j=0;j<len;++j)
n=(10*n+(s[j]-'0'))%i;
if(n==0)
{
a[flag]=i;
flag=flag+1;
}
}
if(flag!=0)
{
for(j=0;j<(flag-1);++j)
cout<<a[j]<<' ';
cout<<a[flag-1]<<endl;
}
else
cout<<"none"<<endl;
}
return 0;
}