UOJ Logo UOJ_Vixbob的博客

博客

大整数的因子

2017-08-09 13:38:40 By UOJ_Vixbob

题目:

描述

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

输入

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

输出

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

样例输入

30

样例输出

2 3 5 6

解题思路:

这道题的的思路类似大整数除法,和我们小学时学的除法的思路类似,只是除数有了范围2~9而已

内附代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
    char a[100];
       gets(a);
    int f=0,t=0,i,j;
    for(j=2;j<=9;j++)
    {
           t=0;
           for(i=0;i<strlen(a);i++)
           {
               if(a[i]-'0'+t>=j)
            t=(a[i]-'0'+t)%j*10;
               else t=(a[i]-'0'+t)*10;
        }
           if(t==0)
           {
               printf("%d ",j);
               f=1;
           }
       }
       if(f==0)printf("none");
       return 0;   
}

评论

vegchicken
沙发

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。