大整数因子

已知正整数 k 满足 2k9,现给出长度最大为 30位的十进制非负整数 c,求所有能整除 c 的 k

输入格式

一个非负整数 cc 的位数 30。

输出格式

若存在满足 c \% k = 0的 k,从小到大输出所有这样的 k,相邻两个数之间用单个空格隔开;若没有这样的 k,则输出"none"

输出时每行末尾的多余空格,不影响答案正确性

样例输入

30

样例输出

2 3 5 6
 1 #include <iostream>
 2 #include<cstring>
 3 using namespace std;
 4 
 5 
 6 int main(){
 7     char a[32];//存被除数
 8     bool flag=false;
 9     int t,len;
10     cin>>a;
11     len = strlen(a);
12     for(int i=2;i<=9;i++){
13         t = 0;
14         for(int j =0;j<len;j++){
15             if(a[j]-'0'+t>=i){
16                 //加上高一位留下的数,要乘10 
17                 //够除的情况,取余
18                 t=((a[j]-'0'+t)%i)*10;
19             }else{
20                 //不够除的情况
21                 t=(a[j]-'0')*10;
22             }
23         }
24         if(t==0){
25             cout<<i<<" ";
26             flag=1;
27         }
28     }
29     if(flag==0){
30         cout<<"none"<<endl;
31     }
32 }

 

posted @ 2020-04-11 11:56  加微信X466550探讨  阅读(91)  评论(0编辑  收藏  举报