zoukankan      html  css  js  c++  java
  • 快速幂求解与快速幂取模

    快速幂求解与快速幂取模

    快速幂求解与快速幂取模

    以下内容简单介绍以下有关快速幂的基本知识。

    什么是快速幂?

    顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。

    算法原理

    1. 根本方法思想:位运算

    快速幂计算幂

    int pow(int a,int b){
      int r=1,base=a;
      while(b){
        if(b&1) r*=base;
        base*=base;
        b>>=1;
      }
      return r;
    }
    

    板子,记住就好。

    快速幂求模

    long long powM(long long a, long long b, long long mode)
    {
    	long long sum = 1;
    	a = a % mode;
    	while (b > 0) {
    		if (b % 2 == 1)		//判断是否是奇数,是奇数的话将多出来的数事先乘如sum
    			sum = (sum * a) % mode;
    		b /= 2;
    		a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
    	}
    	return sum;
    }
    

    板子,记住就好。

    来道题http://poj.org/problem?id=1995

    题解如下:

    #include<cstdio>
    using namespace std;
    
    long long powM(long long a, long long b, long long mode)
    {
    	long long sum = 1;
    	a = a % mode;
    	while (b > 0) {
    		if (b % 2 == 1)		//判断是否是奇数,是奇数的话将多出来的数事先乘如sum
    			sum = (sum * a) % mode;
    		b /= 2;
    		a = (a * a) % mode;// 不断的两两合并再取模,减小a和b的规模
    	}
    	return sum;
    }
    
    int main ()
    {
        long long int  N;
        scanf("%lld",&N);
        for(long long int i = 0;i < N;i++)
        {
            long long int M;
            scanf("%lld",&M);
            long long int n;
            scanf("%lld",&n);
            long long int  sum = 0;
            for(long long int  j = 0;j < n;j++){
                long long int m,n;
                scanf("%lld%lld",&m,&n);
                sum += pow(m,n,M);
            }
            sum %= M;
            printf("%lld\n",sum);
        }
    }
    
    作者:LightAc
    出处:https://www.cnblogs.com/lightac/
    联系:
    Email: dzz@stu.ouc.edu.cn
    QQ: 1171613053
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    在vue项目中使用element-ui的Upload上传组件
    express使用ejs模板引擎渲染html文件
    nodejs服务端实现post请求
    anroid学习笔记(1)
    水平遍历和嵌套递归
    写代码的风格
    简易版本vue的实现和注解
    JavaScript下的new操作符做了什么?
    node下的跨域传递cookie
    用node研究axios前后端交互状态码规则
  • 原文地址:https://www.cnblogs.com/lightac/p/10534746.html
Copyright © 2011-2022 走看看