信息学奥赛一本通T1171:高精度计算 大整数的因子

【题目描述】已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数≤30。【输出】若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样例】30【输出样例】2 3 5 6【源程序】

信息学奥赛一本通T1171:大整数的因子

【题目描述】

已知正整数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 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章