【题目描述】
已知正整数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<cstring> 3 using namespace std; 4 int main() 5 { 6 char c[50]; 7 int a[50],k[20],x,b=0; 8 cin>>c; 9 memset(a,0,(sizeof(a))); 10 int lenc=strlen(c); 11 for(int i=2;i<=9;i++) 12 { 13 for(int o=0;o<lenc;o++) 14 a[o]=c[o]-'0'; 15 x=0; 16 for(int j=0;j<lenc;j++) 17 { 18 a[j]+=x; 19 x=(a[j]%i); 20 x*=10; 21 if(j==lenc-1&&x==0) 22 { 23 b++; 24 k[b]=i; 25 } 26 } 27 } 28 if(b==0) cout<<"none"; 29 else 30 { 31 for(int i=1;i<=b;i++) 32 cout<<k[i]<<" "; 33 } 34 return 0; 35 }
坚持打卡O(∩_∩)O~