【算法练习】字符串处理 poj2925:大整数的因子

题目链接:http://bailian.openjudge.cn/practice/2925

2925:大整数的因子

总时间限制: 

1000ms

内存限制: 

65536kB

描述

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

输入

一个非负整数c,c的位数<=30。

输出

若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。

样例输入

30

样例输出

2 3 5 6 

解题思路:

大整数除小整数的简单的一个应用,看是否能够被整除。

 

AC代码:

#include<iostream>
#include <string.h>
using namespace std;

char str[50];
int main(){
    //感觉输入应该不会有空格
    cin>>str;
    bool flag=false;
    int len=strlen(str);
    for(int i=2;i<=9;i++){
        //从左开始进行大整数除法
        int t=0;  //表示每一位处理完之后的余数
        for(int j=0;j<len;j++){
            //该位置的数字
            int digit=str[j]-'0';
            if(digit+t>=i){  //当前位够除
                //当前位本身的数字加上进位
                t=((digit+t)%i)*10;
            }
            else{
                t=digit*10;
            }
        }

        if(t==0){
            cout<<i<<" ";
            flag=true;
        }


    }

    if(flag== false){
        cout<<"none"<<endl;
    }
    return 0;
}

 

上一篇:PAT 甲级 1027 Colors in Mars (20 分)(进制转换)


下一篇:python用海龟画出7段数码管时钟