zoukankan      html  css  js  c++  java
  • 数学—快速幂

    快速幂

    原理:

    • 有点倍增的思想。
    • 将幂k转化为二进制数,再用位运算&1一位一位去对,来检查k上的某一位是否为1.

    快速幂

    模块化

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    #define ll long long
    int qmi(int a,int k,int p)
    {
    	ll res=1;
    	while(k)
    	{
    		if(k&1)res=(ll)res*a%p;
    		k=k>>1;
    		a=(ll)a*a%p;
    	}
    	return res;
    }
    int main()
    {
    	int n;
    	cin>>n;
    	while(n--)
    	{
    		ll a,k,p;
    		cin>>a>>k>>p;
    		cout<<qmi(a,k,p)<<endl; 
    	}
    	return 0;
    }
    

    原晨旭

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    #define ll long long
    int main()
    {
    	int n;
    	cin>>n;
    	while(n--)
    	{
    		ll a,k,p;
    		cin>>a>>k>>p;
    		ll res=1;
    		//将幂转化为二进制,对每一位都进行判定 
    		while(k>0)
    		{
    			if(k&1)res=(ll)res*a%p;
    			k=k>>1;
    			a=(ll)a*a%p; 
    		}
    		cout<<res<<endl; 
    	}
    	return 0;
    }
    
  • 相关阅读:
    Linux
    网络
    线程池
    JVM内存结构相关知识
    JVM命令
    maven
    多线程
    AJAX、JSON
    JSP、EL、JSTL
    Mysql面试总结
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14729169.html
Copyright © 2011-2022 走看看