大整数因子(高精mod)

Posted Soda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大整数因子(高精mod)相关的知识,希望对你有一定的参考价值。

大整数的因子

总时间限制: 
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

代码

高精模运算

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int x[100],y[100],k[100],j=0,m,n;
char a[100],b[100];
int main()
{
    scanf("%s",a);
    m=strlen(a);
    for(int i=0; i<=m; i++) 
        x[i+1]=a[i]-0;
    for(int p=2; p<=9; p++) 
    {
        memcpy(k,x,sizeof(x));
        for(int i=1; i<=m+1; i++) 
        {
            k[i+1]+=(k[i]%p)*10;
            y[i]=k[i]%p;
            k[i]=k[i]/p;
        }
        if(y[m]==0) 
        {
            cout<<p<<" ";
            j++;
        } 
    }
    if(j==0)cout<<"none";
    return 0;
}

ZlycerQan

#include <iostream>
using namespace std;
int a[10],f=0;
string t;
int main()
{
    cin >> t;
    for (int i = 0; t[i]; i++)
        for (int j = 2; j <= 9; j++)
            a[j] = (a[j] * 10 + t[i] - 0) % j;
    for (int i = 2; i <= 9; i++)
    if (!a[i])
    {
        cout << i <<  ; 
        f = 1;
    }
    if (!f) 
        cout<<"none";
    return 0;
}

 

 

以上是关于大整数因子(高精mod)的主要内容,如果未能解决你的问题,请参考以下文章

高精度 四位压缩

高精度进阶

大整数乘法(高精度乘法)

[位运算] 64位整数乘法(mod 一个数)

[code3119]高精度练习之大整数开根

1007 正整数分组 1010 只包含因子2 3 5的数 1014 X^2 Mod P 1024 矩阵中不重复的元素 1031 骨牌覆盖