模运算——大整数取模、幂取模等
一、加法、减法、乘法取模
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
模运算——大整数取模、幂取模等相关推荐
- 取模运算性质_求余、取模运算在RTOS中计算优先级的理解
uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...
- java取模运算_Java的四则运算符与取模运算符
各位小伙伴们大家好,这次小编要介绍的是Java的四则运算符与取模运算符.这里,小编要提一下一些常见的运算符:算术运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符.这次就先来讲算术运算符与取模运算 ...
- 大数取模运算,快速幂取模运算
1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...
- poj2305-Basic remains(进制转换 + 大整数取模)
进制转换 + 大整数取模 一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内 二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串- ...
- 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...
综述: 取模运算("Modulo Operation")和取余运算("Complementation ")两个概念有重叠的部分但又不完全一致.主要的区别在于对负 ...
- 程序员数学基础【三、取模运算(取余运算功能重叠部分)】(Python版本)
测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...
- 【转】数学与编程——求余、取模运算及其性质
一.求余运算(Remainder) (参考维基百科: http://zh.wikipedia.org/wiki/余数 http://en.wikipedia.org/wiki/Remainder h ...
- 分数的乘法逆元和负数的取模运算
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 ...
- 【算法分析与设计】快速幂算法与快速幂取模算法
文章目录 快速幂算法 算法分析 算法实现 位运算优化 BigInteger支持 快速幂取模算法 算法优点 算法推导 算法实现 BigInteger支持 本文完整代码实现(Java语言描述) 快速幂算法 ...
最新文章
- JUC队列-ArrayBlockingQueue(一)
- 模糊图像处理 去除模糊_图像模糊如何工作
- 什么时候才能都及格呢?
- 局域网交换机(Lan Switch)
- 海康威视C++应用软件开发面经
- 三大开源bi工具_bi智能报表,好用的开源报表工具
- SCI 论文免费下载地址
- 电脑截gif动图软件
- iOS 动画篇 - pop动画库
- 计算软件介绍siesta、vasp、wien2k、PWSCF、Materials Studio
- Java 反射机制:(三)类的加载
- 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
- 【关于为什么要刷力扣的思考】记第二次周赛AK
- 【线性代数】正交向量与正交子空间
- 怎樣制作线段动画_教您怎样才能演示图形平移过程?
- 关于STM32空闲中断极限时间
- 毕业答辩的一系列准备工作
- FastJson - JSONObject 如何设置成有序?(如:LinkedHashMap)
- YGG SEA 通证经济模型概览
- 从零到壹搭建一个商城架构--性能指标