1171:大整数的因子
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
【输入】
一个非负整数c,c的位数≤30。
【输出】
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
【输入样例】
30
【输出样例】
2 3 5 6
【来源】
No
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char charc[31];
int c[35],n,i,j,t,yu,len;
scanf("%s",charc);
memset(c,0,sizeof(c));
len=strlen(charc);
int k=0;
for(i=2;i<=9;i++){
for(t=1;t<=len;t++) c[t]=charc[t-1]-'0';
j=1;
yu=0;
while(j<=len){
if(c[j]+10*yu>=i) yu=(c[j]+10*yu)%i;
else yu=c[j]+10*yu;
j++;
}
if(yu==0) {
printf("%d ",i);
k=1;
}
}
if(k==0) printf("none");
return 0;
}