总时间限制: 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
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 char a1[10001];
6 int a[10001];
7 int c[10001];
8 int tot;
9 int main()
10 {
11 gets(a1);
12 int la=strlen(a1);
13 for(int i=0;i<la;i++)
14 {
15 a[i+1]=a1[i]-48;
16 }
17 int x=0;//商
18 for(int j=2;j<=9;j++)
19 {
20 memset(c,0,sizeof(c));
21 x=0;
22 for(int i=1;i<=la;i++)
23 {
24 c[i]=(x*10+a[i])/j;
25 x=(x*10+a[i])%j;
26 }
27 if(x==0)
28 {
29 tot++;
30 cout<<j<<" ";
31 }
32 }
33 if(tot==0)
34 {
35 cout<<"none";
36 }
37 /*int lc=1;
38 for(int i=1;i<=la;i++)
39 {
40 if(c[i]==0&&lc<la)
41 lc++;
42 else break;
43 }
44 for(int i=lc;i<=la;i++)
45 cout<<c[i];
46 cout<<endl;
47 cout<<x;*/
48 return 0;
49 }