大整数的因子
大整数的因子
已知正整数k
满足2≤k≤9
,现给出长度最大为30
位的十进制非负整数c
,求所有能整除c
的k
。
【输入】
一个非负整数c
,c
的位数≤30
。
【输出】
若存在满足 c%k == 0 的k
,从小到大输出所有这样的k
,相邻两个数之间用单个空格隔开;若没有这样的k
,则输出"none"。
【输入样例】
30
【输出样例】
2 3 5 6
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
string s;
int a[1001],b[1001],c[1001];
cin>>s;
memset(a,0,sizeof(a));
//memset(b,0,sizeof(b));
//memset(c,0,sizeof(c));
int i,j,l1,l2=0;
l1=s.size();
for(i=0;i<l1;i++)
{
a[l1-i]=s[i]-'0';
}
int sum=2,num=0;
for(sum=2;sum<=9;sum++)
{
for(i=1;i<=l1;i++)
{
b[i]=a[i];
}
int x=0;
for(i=l1;i>1;i--)
{
b[i]+=x*10;
//b[i]=b[i]/sum;
x=b[i]%sum;
b[i]=b[i]/sum;
}
b[1]+=x*10;
if(b[1]%sum==0)
{
num=1;
cout<<sum<<" ";
}
}
if(num==0)
{
cout<<"none";
}
return 0;
}