zoukankan      html  css  js  c++  java
  • 第一课 快速幂取模

    站在acm的角度上看,《算法概论》这本书上感觉废话好多。

    始终觉得学算法的最佳途径就是做题,而不是单纯的看书看伪算法。实现才是王道。

    快速幂取模,其实也是以前写过的二分求幂,或离散课上的同余幂。

    以前写的代码版本太乱,现在总结一下,以便以后碰到这类问题能直接对症下药。

    求b^e mod m,b,e,m都是比较大的整数。

    递归算法:

     1 //快速幂取模 
     2 int modexp(int b, int e, int m)    //b是底数,e是指数,m是模 
     3 {
     4     if (e == 0)
     5         return 1;
     6     
     7     int temp = modexp(b, e/2, m);
     8     
     9     if (e%2)  //若e是奇数,那么除以2后会少乘一个b. 
    10         return b*temp*temp%m;
    11     else
    12         return temp*temp%m;
    13 }

    非递归算法:

     1 int modexp(int b, int e, int m) 
     2  {
     3      int ans = 1; 
     4      
     5      while (e)
     6      {
     7          if (e%2)  //若e是奇数,那么除以2后会少乘一个b.
     8              ans = ans*b%m;
     9          
    10          b = b*b%m;
    11          
    12          e /= 2;
    13      }
    14      
    15      return ans;
    16  }
  • 相关阅读:
    typora 页内跳转
    shell脚本搭建redis集群
    Html
    python json模块
    jenkins 问题合集
    day05 每日一行
    day04 每次一行
    day03 每日一行
    day02
    day02 每日一行
  • 原文地址:https://www.cnblogs.com/chenyg32/p/2977457.html
Copyright © 2011-2022 走看看