zoukankan      html  css  js  c++  java
  • ACM:a^b%p-数论-快速幂-快速乘

    Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format:

    Description

    求a的b次方,取模mod(1<=a,b,mod<=1e18)

    Input

    多组输入,每组数据一行,3个正整数,分别为a,b,mod

    Output

    每组数据输出一行,为答案 

    Sample Input

    2 10 10000000
    5 100 1
    0 2 37

    Sample Output

    1024
    0
    0


    //模版题,主要是考虑到1e18的巨大,普通的快速幂会爆LL 所以在相乘的地方用上快速乘,避免爆LL。

    #include"cstdio"
    
    long long mod_mul(long long a,long long b,long long p) {
    	long long r=0;
    	long long t=a; 
    	while(b) {
    		if(b&1) r=(r+t)%p;
    		t=(t<<1)%p;
    		b>>=1;
    	}
    	return r;
    }
    long long mod_pro(long long a,long long b,long long p) {
    	long long r=1;
    	long long t=a; 
    	while(b) {
    		if(b&1) r=mod_mul(r,t,p)%p;
    		t=mod_mul(t,t,p)%p;
    		b>>=1;
    	}
    	return r;
    }
    int main(){
    	long long a,b,mod;
    	while(~scanf("%I64d%I64d%I64d",&a,&b,&mod)){
    		printf("%I64d
    ",mod_pro(a,b,mod));
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    第二十一章 PHP编译安装(centos7)
    第二十章 nginx常见问题
    第十九章 keepalived高可用
    dijkstra
    求逆序对
    A
    P2014 [CTSC1997]选课
    樱花 混合背包
    1401D
    CF1343D
  • 原文地址:https://www.cnblogs.com/HDMaxfun/p/5721357.html
Copyright © 2011-2022 走看看