zoukankan      html  css  js  c++  java
  • 计算机考研真题 大整数的因子

    题目描述

    已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

    输入描述:

    若干个非负整数c,c的位数<=30
    每行一个c

    输出描述:

    每一个c的结果占一行
    1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
    2) 若没有这样的k则输出"none"
    
    注意整数溢出问题
    不要对-1进行计算





    //计算机考研真题 大整数的因子
    /*
    程序设计思想:
        看注释即可。
    */
    //程序实现:
    #include<iostream>
    using namespace std;
    
    int main()
    {
        string str;
        while(cin>>str)
        {
            int tmp;int i;
            for(tmp=0,i=0;i<str.size();i++)
            {
                tmp*=10;
                tmp+=(str[i]-'0');
                if(tmp>=100000000)
                    tmp%=2520;    //2520是2~9的最小公倍数
            }
            bool have=false;    //是否有因数
            for(i=2;i<=9;i++)
            {
                if(tmp%i==0)    //能整除
                {
                    if(have==false)    //第一个因数输出时前面没有空格
                        cout<<i;
                    else
                        cout<<' '<<i;
                    have=true;
                }
            }
            if(have==false)cout<<"none";
            cout<<endl;
        }
    }
    /*
    补充:
    将这几个数分解质因数
    2=2
    3=3
    4=2*2
    5=5
    6=2*3
    7=7
    8=2*2*2
    9=3*3
    然后看看后面的数是否能看成是前面若干个数相乘(不重复)可得出
    2*3*2*5*7*2*3=2520
    看上面的式子,包含2-9的质因数,所以答案应该是2520
    */
  • 相关阅读:
    hdu 3268 09 宁波 现场 I
    hdu 3697 10 福州 现场 H
    CodeForces Round #521 (Div.3) D. Cutting Out
    #Leetcode# 226. Invert Binary Tree
    zufe 蓝桥选拔
    #Leetcode# 100. Same Tree
    #Leetcode# 6. ZigZag Conversion
    PAT 1084 外观数列
    #Leetcode# 38. Count and Say
    #Leetcode# 22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/parzulpan/p/10055513.html
Copyright © 2011-2022 走看看