同余式,乘法逆元,费马小定理

2024-06-12 09:52

本文主要是介绍同余式,乘法逆元,费马小定理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

同余式

余式是 数论 的基本概念之一,设m是给定的一个正整数,a、b是整数,若满足m| (a-b),则称a与b对模m 同余 ,记为a≡b (mod m),或记为a≡b (m)。 这个式子称为模m的同余式,若m∤ (a-b),则称a、b对模m不同余

同余概念又常表达为: 1.a=b+km (k∈Z); 2.a和b被m除时有相同的 余数 

乘法逆元

乘法逆元的定义:在数学领域,对于群G中的任意一个元素a,总存在G中的一个唯一元素a',使得a×a'=a'×a=e,其中e是群G的单位元。这个元素a'被称为a的乘法逆元。在模运算中,如果ab≡1(mod m),那么b就被称为a关于模m的乘法逆元

费马小定理

推导

由费马小定理+乘法逆元可知,a^(mod-2)就是a取模mod的乘法逆元 

例题

 

题意:就是说给你一个数,然后问你这个数n这个数被连接n次,然后取模 998244353,所得到的结果是什么,例如样例这个5,5被连接五次就是55555,取模998244353还是55555,所以要输55555

思路,我们发现在连接的过程中,每一项都是后一项的w倍(w是给出的n的倍数,有一位,w就要乘上10,比如说上面这个样例的w就是10)

最终结果是sum=n+w^1*n+w^2*n+......+w^n-1*n;

我们发现每一项都是等比数列,我们可以用等比数列的公式计算出最终结果为n*(w^n-1)/w-1

由取模公式可知,除法取模不能直接取模,我们要借助费马小定理进行逆元,然后得到的

w-1的乘法逆元为(w-1)^(mod-2)

最终结果就变成了n*(w^n-1)*(w-1)^(mod-2),然后在计算过程中对每一步都进行取余数就OK了

当然了,计算这种指数也有方法,用快速幂算法logN的数据绝对不会爆

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
int w=1;//统计位数
int mod=998244353; 
int sum=0;
//快速幂公式
int fast(int a, int b) 
{long long result = 1;long long base = a;while (b > 0) {if (b % 2 == 1) {result = (result * base) % mod;}base = (base * base) % mod;b /= 2;}return result;
}signed main()
{cin>>n;int flag=n;while(flag){flag/=10;w*=10;w%=mod;}sum=((n%mod*(fast(w,n)-1)%mod)%mod*fast(w-1,mod-2)%mod)%mod;cout<<sum;return 0;
}

这篇关于同余式,乘法逆元,费马小定理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053882

相关文章

Strassen矩阵乘法简要解析(第4章:分治策略)

Strassen矩阵乘法简要解析 Strassen矩阵乘法具体描述如下: 两个n×n 阶的矩阵A与B的乘积是另一个n×n 阶矩阵C,C可表示为假如每一个C(i, j) 都用此公式计算,则计算C所需要的操作次数为n3 m+n2 (n- 1) a,其中m表示一次乘法,a 表示一次加法或减法。 为了使讨论简便,假设n 是2的幂(也就是说, n是1,2,4,8,1 6,...)。 首先,假设

代数扩张次数关系定理

【单代数扩张同构引理】 对于单扩张 K / F \mathbb{K/F} K/F有同构 F [ a ] ≅ F [ x ] / ⟨ f ( x ) ⟩ \mathbb{F}\lbrack a\rbrack \cong \mathbb{F}\lbrack x\rbrack/\left\langle f(x) \right\rangle F[a]≅F[x]/⟨f(x)⟩,其中 a ∈ K a \i

【位操作笔记】计算奇偶性 使用乘法

计算奇偶性(Compute parity) 使用乘法 计算奇偶性(Compute parity)指的是,计算一个数所包含1的个数是奇数还是偶数,例如一个8位数0x5b = 0b‭0101 1011‬,其中1的个数为5,是奇数;一个8位数0xa3 = 0b‭‭1010 0011‬,其中1的个数为4,是偶数。该算法可以用于奇偶校验位的计算与验证。 算法说明 使用乘法运算,仅在8次运算中计算32位

【位操作笔记】计算奇偶性 使用64位乘法和模除的方法

计算奇偶性(Compute parity) 使用64位乘法和模除的方法 计算奇偶性(Compute parity)指的是,计算一个数所包含1的个数是奇数还是偶数,例如一个8位数0x5b = 0b‭0101 1011‬,其中1的个数为5,是奇数;一个8位数0xa3 = 0b‭‭1010 0011‬,其中1的个数为4,是偶数。该算法可以用于奇偶校验位的计算与验证。 算法说明 使用64位乘法和模除

大整数的乘法运算

通常,在分析一个算法的计算复杂性时,都将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运算所需的计算时间当作一个仅取决于计算机硬件处理速度的常数。    这个假定仅在计算机硬件能对参加运算的整数直接表示和处理时才是合理的。然而,在某些情况下,我们要处理很大的整数,它无法在计算机硬件能直接表示的范围内进行处理。若用浮点数来表示它,则只能近似地表示它的大小,计算结果中的有效数字也受到限制

用原生js实现一个页面乘法口诀表

今天我自己用js实现了一个页面乘法口诀表(如图),在控制台中输入哦! 来共享给大家,做的不是很好,如果大家有新的想法可以跟我交流哦。 代码如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script>for(var r=

高中数学:数列-累加法与累乘法

一、累加法 主要用来解决类似等差数列递推公式的相关变形题目 1、推导等差数列的通项公式 2、题型1 对递推式变形,通项的系数为1,常数项d变成含n的一次函数 解: 题型2 对递推式变形,通项的系数为1,常数项d变成含n的指数函数 解: 题型3 对题型2的变形 解: 二、累乘法 主要用来解决类似等比数列递推公式的相关变形题目 1、推导等比数列通项公式

中国剩余定理——AcWing 204. 表达整数的奇怪方式

中国剩余定理 定义 中国剩余定理最早出自我国古代的《孙子算经》,是数论中的一个重要定理。它描述了这样一种情况:在模运算下,对于一组线性同余方程组,存在唯一解的条件和求解方法。 运用情况 常用于在一些涉及到按不同模的余数条件下求解问题。比如在密码学、计算数论、计算机科学等领域中,当需要处理多个模条件相关的计算时,常常会用到中国剩余定理。 注意事项 要求各个模之间互质,否则定理不直接适用,

基于 Vitis HLS 的单个乘法 DSP 映射研究

文章目录 1 自媒体账号2 引言3 整数乘法4 定点乘法5 浮点乘法6 总结 1 自媒体账号 目前运营的自媒体账号如下: 哔哩哔哩 【雪天鱼】: 雪天鱼个人主页-bilibili.com 如果觉得有所收获的话,可以点击我的主页 -> 充电 -> 自定义充电 支持一下,十分感谢! 微信公众号 【雪天鱼】 CSDN 【雪天鱼】: 雪天鱼-CSDN博客 QQ 学习交流群

多元多项式的特征列与零点的关系定理

下面这个定理来自《计算机代数》6.1三角列与特征列(王东明、夏壁灿著) 【定理】 设 C = [ C 1 , … , C r ] \mathbb{C =}\left\lbrack C_{1},\ldots,C_{r} \right\rbrack C=[C1​,…,Cr​]为多项式组 P ⊂ K [ x ] \mathbb{P \subset}\mathcal{K\lbrack}\mathbf