繁体   English   中英

求平方的大数的模

[英]Modulo for large numbers that are squared

我想剩下的很多。 例如300 ^ 31。 当我尝试使用%运算符时,它说我不能在双精度上使用它,因为它仅适用于整数。 该计算有功能吗?

我尝试使用a=pow(b,x)%d;

如果bxd适合整数,则可以使用

int expoModulo(int b, int x, int d) {
    int a = 1;
    for(int i=0; i<x; i++) {
        a = (a*b)%d;
    }
    return a;
}

我认为在尝试求幂时最好取余数。 您可以使用大模算法 这将帮助您避免人数众多。 然后,您可以使用long long而不是double。

我尝试在代码块16.01( codeblocks-16.01mingw-setup.exe )中编写此代码,并且效果很好(我的代码与链接代码略有不同,但是概念相同):

#include<iostream>
using namespace std;

int bmod = 33;

int bigmod(long long int x,long long int b){ // x^b
    int ans=1;
    while(b){
        if(b%2)ans=((long long)ans*x)%bmod;
        b=b>>1;
        x=((long long)x*x)%bmod;
    }
    return ans;}

int main(){
    cout<<bigmod(300,31);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM