当前位置: 首页 > news >正文

自己做的网站不能用手机访问福州短视频seo机会

自己做的网站不能用手机访问,福州短视频seo机会,建设网站的特色,wordpress h5 视频什么是乘法逆元? 算数意义上的乘法逆元指的是倒数,即:a*(1/a)1 所以 1/a 是 a在算数意义下的乘法逆元,或者可以说二者互为逆元。 这有什么用呢? 除以a就等于乘上a的乘法逆元,乘以…

什么是乘法逆元?

算数意义上的乘法逆元指的是倒数,即:a*(1/a)=1


所以 1/a 是 a在算数意义下的乘法逆元,或者可以说二者互为逆元。
这有什么用呢?


除以a就等于乘上a的乘法逆元,乘以a等于除以a的乘法逆元。

那么我们回到我们要介绍的新的乘法逆元:模意义上的乘法逆元。(使用条件,当一个正整数做分母的时候)

例如我们要求(x+y)*(x-y)/2 mod p

很显然,对于分子,我们可以直接用模的性质
(x+y)*(x-y)modp = 【(x+y)%p *(x-y)%p】%p


但是,这样的方法只对加减乘有效。

除法的话,由于整除向下取整的原因,我们无法直接使用。这时候就要用到逆元,来代替除法,因为除以一个数取模,等于乘上它在模意义上的逆元,后取模。

ok,那么什么是模意义上的乘法逆元呢?


  给出定义: a*x = 1(mod)p,也就是a*x对p取模为1的时候,x就是a 的逆元,所以,当除以a的时候就相当于是乘上a的逆元x。(注意,模只对整数时有意义的,所以我们的变量都应该是整数)

那么我们知道了模意义上的乘法逆元,应该怎么求它的乘法逆元呢?
就可以用到三种方法:扩展欧几里得算法,费马小定理,线性递推。

扩展欧几里得算法:

a*x=1 (mod)p
这个式子可以展开写成:(扩展欧几里得相关文章连接:
《洛谷深入浅出进阶篇》 欧几里得算法,裴蜀定理,拓展欧几里得算法————洛谷P1516 青蛙的约会-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134751119?spm=1001.2014.3001.5502
a*x+p*y=1
也就是求x,y的不定方程。
我们由裴蜀定理可知:这个方程只有gcd(a,p)=1的时候才有解,所以,gcd=1是求逆元的前提条件。

然后我们直接套exgcd(a,p,x,y)即可
虽然求出来的是a的一个逆元,但是我们由拓展欧几里得可以求出通式,x=x1+k*lcm(a,p)/a   (k可以取任意整数)

只要不断+模数p就可以求出最小正整数解

2,费马小定理:如果p是质数,且gcd(a,p)=1,a^(p-2)是a的一个乘法逆元。


那么如何求a^(p-2)?
我们可以用到快速幂的方法,

s=1,t=p-2   y=a
while(t!=0){
     if(p&1==1)s=s*y
     y*=y;
     t/=2;
}

线性递推求逆元


假如给你1~n个数,让你求所有整数在模p意义下的乘法逆元。你应该怎么办?(n<=1e6)

如果你每次都用exgcd或者费马小定理+快速幂这题是肯定是会超时的,所以我们只能用线性优化了。

只能使用递推的方式来解决这道题

那么我们必须找到递推的式子

假设 inv(i)是i在模意义下的逆元(记住板子即可)

p=i*q+r,其中q=【p/i】(整除),r=p%i。
第一个式子:p=i*q+r

在模意义下可以得到这样的式子:
 i*q+r == 0 (mod p)

变形为: i ==  -r/q  (mod p)

等价于:i== -r * inv(q)  (mod p)

两边取倒数:(整数的倒数来表示逆元函数)

1/i == -1/r   *   q

inv(i) == -inv(r)*q == -inv(r)*【p/i】;

因为 r=p%i,所以r是一定小于当前的i的,怎么求inv(r)

由于我们是递推求逆元,当求到i时,说明i-1,i-2,......1 都求出来了。

所以我们只要注意边界 inv(1) =1即可

但是还是有一个问题,就是,这样求出来的逆元,有些是负数的,如果我们要求逆元的最小正整数应该怎么办?
那也好办,不断在其后面加上p就可以了,当逆元大于0,退出循环。

上代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<queue>
#include<numeric>
#include<iomanip>
using namespace std;
typedef long long LL;
const int N = 3e6 + 7;
LL inv[N];
int main()
{LL n,p;cin >> n>>p;inv[1] = 1;for (int i = 2; i <= n; i++) {LL q = p / i;LL r = p % i;inv[i] = (-q * inv[r]%p)%p;while(inv[i]<0)inv[i]+=p;}for (int i = 1; i <= n; i++)cout << inv[i] << '\n';
}


 

http://www.ds6.com.cn/news/55225.html

相关文章:

  • 衡水企业做网站公司网站策划宣传
  • 电商网站建设选迅法网怎么建网站赚钱
  • 织梦的网站关键词免费发布信息的平台
  • 做网站的功能结构布局视频seo优化教程
  • wordpress中医主题seo的范畴是什么
  • 网站建设一个月多少钱搜索引擎优化的方法包括
  • wordpress太慢了app优化推广
  • 东莞网站建设设计公司知乎推广
  • 电商网站的制作流程福州seo排名优化
  • 怎么建动态网站吗国内做seo最好公司
  • 一步一步网站建设教程免费创建个人博客网站
  • 网站关键词布局seo关键词排名优化专业公司
  • 网站建设学多久百度竞价排名案例分析
  • 做宣传单用什么网站2023能用的磁力搜索引擎
  • 24小时自助下单网站网络优化工程师主要做什么
  • 做网站的是什么工作视频网站推广
  • 河北搭建营销型网站西安网站seo服务
  • wordpress怎么查看源代码百度优化
  • 那些网站是做金融行业产品的推广及宣传思路
  • 九亭 网站建设百度推广一个月多少钱
  • 玉田网站建设关键词优化包含
  • 南京快速建站公司网络营销广告
  • 淘宝上做网站的靠谱抖音推广渠道有哪些
  • 中堂镇仿做网站推广计划怎么做
  • 十堰网站开发济南网络seo公司
  • 通付盾 网站公司建设北京网络优化推广公司
  • 商城网站建设方案 2017武汉做网页推广公司
  • 网站建设便宜公司网络自动推广软件
  • 致设计网络优化工程师吃香吗
  • 网站怎么做付费项目浏览器大全网站