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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://www.lydsy.com/JudgeOnline/problem.php?id=1951

?

先歐拉降冪

然后模數質因數分解

分別計算組合數的結果,中國剩余定理合并

?

#include<cmath> #include<cstdio> #include<iostream> using namespace std;const int mod=999911659; const int phi=mod-1;typedef long long LL;int p[5]; LL mul[5][35618];LL c[5];void pre() {p[1]=2;p[2]=3;p[3]=4679;p[4]=35617;for(int i=1;i<=4;++i){mul[i][0]=1;for(int j=1;j<=35617;++j) mul[i][j]=mul[i][j-1]*j%p[i]; } }LL gcd(LL a,LL b) {return !b ? a : gcd(b,a%b); }LL Pow(LL a,LL b,LL mod) {LL ans=1;for(;b;a=a*a%mod,b>>=1)if(b&1) ans=ans*a%mod;return ans; }LL C(LL n,LL m,int i) {if(m>n) return 0;return mul[i][n]*Pow(mul[i][m],p[i]-2,p[i])%p[i]*Pow(mul[i][n-m],p[i]-2,p[i])%p[i]; }LL Lucas(LL n,LL m,int i) {if(m>n) return 0;LL ans=1;for(;m;n/=p[i],m/=p[i]) ans=(ans*C(n%p[i],m%p[i],i))%p[i];return ans; }void exgcd(LL a,LL b,LL &x,LL &y) {if(!b) x=1,y=0;else exgcd(b,a%b,y,x),y-=a/b*x; }int main() {pre();LL n,g;cin>>n>>g;if(gcd(g,mod)!=1) {printf("0");return 0;}int m=sqrt(n);for(int i=1;i<=m;++i)if(n%i==0){for(int j=1;j<=4;++j) c[j]=(c[j]+Lucas(n,i,j))%p[j];if(n/i!=i) for(int j=1;j<=4;++j) c[j]=(c[j]+Lucas(n,n/i,j))%p[j]; }LL ans=0;LL Mi,mi,x,y;for(int i=1;i<=4;++i){Mi=phi/p[i];mi=p[i];exgcd(Mi,mi,x,y);x=(x%mi+mi)%mi;if(!x) x+=mi;ans+=c[i]*Mi*x;}ans=Pow(g,ans,mod); cout<<ans; }

?

轉載于:https://www.cnblogs.com/TheRoadToTheGold/p/8993846.html

總結

以上是生活随笔為你收集整理的bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。