【题目描述】
已知正整数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<cstring>
using namespace std;
int a[50],b[50];
char str[50];
int divide(int x)//高精除
{
int i=a[0],res=0;
while(i>0)
{
res*=10;
res+=a[i];
res%=x;
i--;
}
return res;
}
int main()
{
int len;
bool flag=false;
int i;
cin>>str;
len=strlen(str);
int k=1;
for(i=len-1;i>=0;i--)//数据处理
{
a[k]=str[i]-'0';
k++;
}
a[0]=len;
for(i=2;i<=9;i++)
{
if(divide(i)==false)//判断是否能整除,可以就输出
{
flag=true;
cout<<i<<" ";
}
}
if(flag==false)
cout<<"none"<<endl;
return 0;
}
信息学奥赛一本通T1171:高精度计算 大整数的因子 归属于 高精度计算,更多同类题解源程序见:高精度计算 和 大整数的因子
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!