日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)

發(fā)布時(shí)間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Codeforces Beta Round #17

題目鏈接:點(diǎn)擊我打開(kāi)題目鏈接

大概題意:

給你 \(b\)\(n\)\(c\).

讓你求:\((b)^{n-1}*(b-1)\%c\).

\(2<=b<=10^{10^6},1<=n<=10^{10^6},1<=c<=10^9\)

簡(jiǎn)明題解:

因?yàn)?\(b\) , \(n\)都太大了。關(guān)鍵是求 \((b)^{n-1}\%c\)

所以,我們可以利用歐拉函數(shù) \(phi()\) 的性質(zhì)。

對(duì)于\(a^ \% c\) 的形式,我們可以有:

當(dāng) \(a\)\(c\) 互質(zhì)時(shí)有 \(a^{phi(c)} = 1( \mod c)\),

那么經(jīng)過(guò)推導(dǎo)就有(有空寫(xiě)一下 \(Pre-knowledge\)):

\(a^b\%c=a^{(b\%phi(c))}\). (數(shù)論歐拉定理)

但是這個(gè)題上并沒(méi)有說(shuō)明 \(a\)\(c\) 互質(zhì)。所以不能用這個(gè)方法。

所以正解是,我們可以學(xué)習(xí)一下廣義歐拉定理(無(wú)互質(zhì)要求),用這個(gè)來(lái)降冪: (廣義歐拉定理):

\(a^b\%c≡a^{(b\%phi(c))\%c}\) \((b<phi(c))\)

\(a^b \%c= a^{(b\%phi(c)+phi(c))\%c}\)\(b>=phi(c)\)

然后這題預(yù)處理一下 \(phi\)就可以解決了。

復(fù)雜度:大概是 \(sqrt(c) * log(c))+log(phi(c))\)

代碼:

#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1000100; char b[N],n[N]; int phi(int x) {int res=x;for(int i=2;i*i<=x;i++)if(x%i==0){res=res/i*(i-1);while(x%i==0)x/=i;}if(x>1)res=res/x*(x-1);return res; } int q_pow(int a,int k,int mod) {int res=1;while(k){if(k&1)res=1LL*res*a%mod;a=1LL*a*a%mod;k>>=1;}return res%mod; } int cal(char *str,int mod) {int res=0;for(int i=0;str[i];i++){res=(10LL*res + str[i]-'0') % mod;} return res; } int main() {int c;scanf("%s%s%d",b,n,&c);if(c==1){cout<<1<<endl;exit(0);}int B=cal(b,c);int res=(B + c - 1) % c;int Phi=phi(c);int t=0;for(int i=0;n[i];i++){t = min(1000000000LL,10LL * t + n[i]-'0');}if(t - 1 < Phi){res = 1LL * res * q_pow(B,t-1,c)%c;}else {res = 1LL * res * q_pow(B,cal(n,Phi) + Phi - 1,c)%c;}printf("%d\n",(res + c - 1)%c + 1);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/LzyRapx/p/7738447.html

總結(jié)

以上是生活随笔為你收集整理的Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。