一、加法、减法、乘法取模

int add_mod(int a, int b, int p)
{a %= p; b %= p;return (a + b) % p;
}int sub_mod(int a, int b, int p)
{a %= p; b %= p;return (a - b + p) % p;                //a mod n可能小于b mod n,需要在结果加上n
}LL mul_mod(LL a, LL b, LL p)
{a %= p; b %= p;return a * b % p;    //a mod n和b mod n的乘积可能超LL
}

二、大整数取模

求n mod m 的值,(n ≤10100,m ≤109)

思路:首先,将大整数根据秦九韶公式写成“自左向右”的形式:4351 = ((4 * 10 + 3) * 10 + 5) * 10 + 1,然后利用模的性质,逐步取模。

 1 const int maxn = 100 + 10;
 2 char n[maxn];
 3 int m;
 4
 5 int biginteger_mod(char* n, int m)
 6 {
 7     int len = strlen(n);
 8     int ans = 0;
 9     for(int i = 0;i < len;i++)
10         ans = (int)(((long long)ans * 10 + n[i] - '0') % m);
11     return ans;
12 }

三、幂取模

直接暴力写是O(n),较快的方法是分治法,时间复杂度是O(logn)

求an mod m 的值,

1 LL pow_mod(LL a, LL n, LL m)
2 {
3     if (n == 0)  return 1;
4     LL ans = pow_mod(a, n / 2, m);
5     ans = ans * ans % m;
6     if (n % 2)  ans = ans * a % m;
7     return ans;
8 }

转载于:https://www.cnblogs.com/lfri/p/9614074.html

模运算——大整数取模、幂取模等相关推荐

  1. 取模运算性质_求余、取模运算在RTOS中计算优先级的理解

    uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...

  2. java取模运算_Java的四则运算符与取模运算符

    各位小伙伴们大家好,这次小编要介绍的是Java的四则运算符与取模运算符.这里,小编要提一下一些常见的运算符:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符.这次就先来讲算术运算符与取模运算 ...

  3. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

  4. poj2305-Basic remains(进制转换 + 大整数取模)

    进制转换 + 大整数取模 一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内 二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串- ...

  5. 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...

    综述: 取模运算("Modulo Operation")和取余运算("Complementation ")两个概念有重叠的部分但又不完全一致.主要的区别在于对负 ...

  6. 程序员数学基础【三、取模运算(取余运算功能重叠部分)】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  7. 【转】数学与编程——求余、取模运算及其性质

    一.求余运算(Remainder) (参考维基百科: http://zh.wikipedia.org/wiki/余数  http://en.wikipedia.org/wiki/Remainder h ...

  8. 分数的乘法逆元和负数的取模运算

    1.乘法逆元 A.定义 如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x. 既然有ax≡1 (mod p),那么有ax - py = 1,x是a关于模p ...

  9. 【算法分析与设计】快速幂算法与快速幂取模算法

    文章目录 快速幂算法 算法分析 算法实现 位运算优化 BigInteger支持 快速幂取模算法 算法优点 算法推导 算法实现 BigInteger支持 本文完整代码实现(Java语言描述) 快速幂算法 ...

最新文章

  1. JUC队列-ArrayBlockingQueue(一)
  2. 模糊图像处理 去除模糊_图像模糊如何工作
  3. 什么时候才能都及格呢?
  4. 局域网交换机(Lan Switch)
  5. 海康威视C++应用软件开发面经
  6. 三大开源bi工具_bi智能报表,好用的开源报表工具
  7. SCI 论文免费下载地址
  8. 电脑截gif动图软件
  9. iOS 动画篇 - pop动画库
  10. 计算软件介绍siesta、vasp、wien2k、PWSCF、Materials Studio
  11. Java 反射机制:(三)类的加载
  12. 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
  13. 【关于为什么要刷力扣的思考】记第二次周赛AK
  14. 【线性代数】正交向量与正交子空间
  15. 怎樣制作线段动画_教您怎样才能演示图形平移过程?
  16. 关于STM32空闲中断极限时间
  17. 毕业答辩的一系列准备工作
  18. FastJson - JSONObject 如何设置成有序?(如:LinkedHashMap)
  19. YGG SEA 通证经济模型概览
  20. 从零到壹搭建一个商城架构--性能指标

热门文章

  1. 那些年,我用过的虚拟主机
  2. 【180928】BlackJack游戏源码
  3. 系统架构设计笔记(13)—— 数据挖掘
  4. 云商互惠商城源码/大型买返商城源码,返利商城源码
  5. BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛【DP】
  6. python 有没有 hold on的用法
  7. SpringBoot整合tkMapper
  8. 网技·实验·3.29
  9. 刷问卷星调查问卷_如何通过回答快速调查问卷从Google获得免费资金
  10. selenium学习——问卷星(可控比例)