描述
已知正整数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 <stdio.h>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
//#define N 10001
int main(){
char arr[31];
cin>>arr;
int len = strlen(arr);
int flag = 0, t = 0;
for(int k=2; k<10; ++k){
t = 0;
for(int i=0; i<len; ++i){
t = arr[i] - '0' + t*10;
// printf("t = %d\n", t);
if (t >= k || t == 0){
t = t%k;
if(t == 0 && i==len-1){
printf("%d ",k);
flag = 1;
}
}else{
if(i+1 < len){
t = t*10 + arr[++i]-'0';
// printf("ab %d \n",t);
t = t%k;
// printf("abc %d \n",t);
if(t == 0 && i==len-1){
printf("%d ",k);
flag = 1;
}
}else{
break;
}
}
}
}
if(flag == 0){
printf("none");
}
return 0;
}