<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      乘法逆元

      也挺簡單

      定義:

      \(a,m\) 互質,且滿足:

      \[a\times x\equiv 1 \pmod{m} \]

      則稱 \(x\)\(a\)\(\bmod b\) 意義下的乘法逆元,也記為 \(a^{-1}\)。

      用途:

      主要用于 \(\frac{x}{y} \bmod m\) 求值,一般是因為無法化簡(例如數太大。

      求法:

      1. \(exgcd\):

      \[ax\equiv 1 \pmod{m} \]

      轉化得:

      \[ax+my=1 \]

      運用 \(exgcd\) 求解即可。

      CODE(點擊查看)
      void exgcd(int a,int b,int &x,int &y){
      	if(b==0) x=1,y=0;
      	else exgcd(b,a%b,y,x),y-=a/b*x;
      }
      int main(){
      	int a,m; scanf("%d%d",&a,&m);
      	int x,y;
      	exgcd(a,m,x,y);
      	printf("%d",(x%m+m)%m); //注意x的取值范圍。 
      }
      

      2.費馬小定理(m是質數):

      費馬小定理

      我們將費馬小定理帶入原式,得:

      \[ax\equiv a^{m-1} \pmod{m} \]

      \[x\equiv a^{m-1} \div a \pmod{m} \]

      \[x \equiv a^{m-2} \pmod{m} \]

      所以我們只需求 \(a^{m-2}\) 即可,用快速冪。

      COED(點擊查看)
      inline int fpow(int a,int b,int mod){
      	int ans=1;
      	while(b){
      		if(b&1) ans=a*ans%mod;
      		a=a*a%mod;
      		b>>=1;
      	}
      	return ans%mod;
      }
      int main(){
      	int a,m; scanf("%d%d",&a,&m);
      	printf("%d",fpow(a,m-2,m));
      }
      

      3.線性求法(求得 \(1 \text{ ~ } n\) ):

      這種方法在但求一個時慢于前兩種,但求 \(1 \text{ 到 } n\) 是優于前兩種例題。
      \(m=k \times a+r (1 \le r < a < m)\)
      于是有:

      \[ka+r \equiv 0 \pmod{m} \]

      乘上 \(r^{-1},a^{-1}\) ,得:

      \[kr^{-1}+a^{-1}\equiv 0 \pmod{m} \]

      \[a^{-1}\equiv -kr^{-1} \pmod{m} \]

      \[a^{-1}\equiv -\left\lfloor\dfrac{m}{a}\right\rfloor\times(m \bmod a)^{-1} \pmod{m} \]

      我們又知道,\(1^{-1}\)\(1\) 于是就可以線性推了。

      CODE(例題,點擊查看)
      #include<bits/stdc++.h>
      using namespace std;
      const int N=3e6+5;
      long long n,p,inv[N];
      
      template<typename T>
      inline void read(T &x){
          char s=getchar();x=0;bool pd=false;
          while(s<'0'||'9'<s){if(s=='-') pd=true;s=getchar();}
          while('0'<=s&&s<='9')x=(x<<1)+(x<<3)+(s^48),s=getchar();
          if(pd) x=-x;
      }
      
      int main(){
      	read(n),read(p);
      	inv[1]=1;
      	for(int i=2;i<=n;i++)
      		inv[i]=(p-p/i)*inv[p%i]%p;
      	for(int i=1;i<=n;i++)
      		printf("%lld\n",inv[i]);
      }
      
      CODE(主要代碼,點擊查看)
      inv[1]=1;
      for(int i=2;i<=n;i++)
      	inv[i]=(p-p/i)*inv[p%i]%p;
      

      4.階乘求逆元:

      求:\(1! \text{ 到 } n!\) 的逆元。
      給出一個式子,其中 \(v(i)\) 表示 \(i\) 的逆元。

      \[v((i-1)!)=\frac{1}{(i-1)!}=\frac{1}{i!}*i=v(i!)*i \]

      于是乎又可以線性推了。

      然而這種做法還可以求 \(l \text{ 到 } r\) 的逆元。
      具體的:

      \[v(i)=\frac{1}{i}=\frac{1}{i!}\times(i-1)!=v(i!)\times(i-1)! \]

      然后可求。


      附:有趣的題:

      給定一個長度為 \(n\) 的序列 \(a\) ,求 \(a_1 \text{ 到 } a_n\) 所有數的乘法逆元。
      \(1 \le n \le 5e6\) (要求復雜度 \(\operatorname{O} n\)
      做法:
      先維護前綴積 \(q_i\)
      通過:

      \[q_i^{-1}\times a_i=\frac{1}{\prod\limits_{j=1}^ia_j}\times a_i=q_{i-1}^{-1} \]

      推得 \(q^{-1}\) 的值。
      然后通過:

      \[q_i^{-1}\times q_{i-1}=\frac{1}{\prod\limits_{j=1}^ia_j}\times\prod\limits_{j=1}^{i-1}a_j=a_i^{-1} \]

      得解。

      參考 http://www.rzrgm.cn/zjp-shadow/p/7773566.html

      posted @ 2023-01-29 16:07  xrlong  閱讀(81)  評論(1)    收藏  舉報

      Loading

      主站蜘蛛池模板: 少妇被日自拍黄色三级网络| 伊人欧美在线| av老司机亚洲精品天堂| 无码人妻一区二区三区免费N鬼沢| 亚洲乱码av中文一区二区| 久久精品国产免费观看频道| 国产国产成人精品久久蜜| 国产99久久无码精品| 久久毛片少妇高潮| 曝光无码有码视频专区| 视频一区视频二区亚洲视频| 日韩一区二区三区三级| 爱性久久久久久久久| 免费无码又爽又刺激网站直播| 亚洲国产精品综合久久2007| 欧美一区二区三区欧美日韩亚洲| 日韩国产中文字幕精品| 久久久久久亚洲精品成人| 三级三级三级A级全黄| 滦平县| 色先锋av影音先锋在线| 东方四虎在线观看av| 欧美牲交a欧美在线| 无码日韩精品一区二区免费| 国产一区二区三区av在线无码观看 | 久久精品一本到99热免费| 人妻少妇久久中文字幕一区二区| 中文熟妇人妻av在线| 亚洲女同在线播放一区二区| 午夜免费无码福利视频麻豆| 久久天天躁狠狠躁夜夜av不卡| 91高清免费国产自产拍| 西西人体大胆444WWW| 国产精品视频一区不卡| 国产永久免费高清在线观看| 久草国产视频| 亚洲AVAV天堂AV在线网阿V| 精品视频一区二区福利午夜| 精品黄色av一区二区三区| 色偷一区国产精品| 深夜在线观看免费av|