当前位置:首页 > C++知识 > 正文内容

取模运算总结——数论

亿万年的星光4年前 (2021-04-17)C++知识9923
  • 编程竞赛有相当一部分题目的结果过于庞大,整数类型无法存储,往往只要求输出取模的结果。

  • 例如(a+b)%p,若a+b的结果我们存储不了,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模,b取模,再求和,输出的结果相同。


  • a mod b表示a除以b的余数。有下面的公式:

    • (a + b) % p = (a%p + b%p) %p

    • (a - b) % p = ((a%p - b%p) + p) %p

    • (a * b) % p = (a%p)*(b%p) %p


举例说明:

如果我们要计算下面公式:

(a1*a2*a3*...an)%p。我们给这个公式赋值(10*20*30)%6。先按照最原始的方法运算,10*20*30=6000,然后6000%6=0

如果我们用右边的公式计算,把10*20*30进行拆分。根据公式得 ((10%6)*(20%6)*(30*6))*6 。我们可以发现10%6=4,20%6=2,30%6=0。即时我不考虑最后一个数字,前面的乘积最大才是8。也就是说,我们通过这样的方法,可以将运算过程中的大数尽量避免掉。

扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

2023 CSP 山东地区分数线汇总

地区CSP-XCSP-JCSP-S烟台556648.5临沂516416青岛476753淄博446547.5...

C++读取磁盘文件

0.前言简单介绍一下C++读取文件的基本操作。关键技术:freopen() 文件的打开函数 FILE *fp fp=fopen(文件名,使用文件方式) 例如: fp...

【题解】盈亏问题

【题目描述】一群人团购一件物品:如果每人出 a元,所付总金额比物价多出了x 元;如果每人少出 1元,也就是每人出a-1元,所付总金额比物价少了y元。给定 a,x,y求参与团购的人数及该物品的...

C++中的逻辑与运算

样例#include<iostream> using namespace std; int main(){ cout<<(1&1)...

【数据结构】并查集1

【数据结构】并查集1

1.引入    对于一个集合S={a1, a2, …, an-1, an},我们还可以对集合S进一步划分: S1,S2,…,Sm-1,Sm,我们希望能够快速确定...

拓扑排序

拓扑排序

一、定义对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则...