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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

P2012-拯救世界2【EGF】

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P2012-拯救世界2【EGF】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P2012


題目大意

121212種東西排列成長度為nnn的序列,要求前四種出現奇數次,后四種出現偶數次,求方案。TTT組數據,對10910^9109取模。

1≤n<263,1≤T≤2×1051\leq n< 2^{63},1\leq T\leq 2\times 10^51n<263,1T2×105


解題思路

顯然是EGFEGFEGF,沒有限制的話就是exe^xex,奇數就是ex?e?x2\frac{e^x-e^{-x}}{2}2ex?e?x?,偶數就是ex+e?x2\frac{e^{x}+e^{-x}}{2}2ex+e?x?,這些都是老生常談了。

然后答案就是
n!×(ex?e?x2)4(ex+e?x2)4(ex)4n!\times (\frac{e^x-e^{-x}}{2})^4(\frac{e^x+e^{-x}}{2})^4(e^{x})^4n!×(2ex?e?x?)4(2ex+e?x?)4(ex)4

然后解出來就是
F(x)=n!×1256×(e12x?4e8x+6e4x?4+e?4x)F(x)=n!\times \frac{1}{256}\times(e^{12x}-4e^{8x}+6e^{4x}-4+e^{-4x})F(x)=n!×2561?×(e12x?4e8x+6e4x?4+e?4x)
?F(x)[n]=1256×(12n?4×8n+6×4n?4+(?4)n)\Rightarrow F(x)[n]=\frac{1}{256}\times(12^n-4\times 8^n+6\times 4^{n}-4+(-4)^n)?F(x)[n]=2561?×(12n?4×8n+6×4n?4+(?4)n)

然后發現256256256沒有逆元,但是因為這些底數都含有256256256的因數222所以
=81×12n?4?8n?2+6×4n?4+(?4)n?4=81\times 12^{n-4}-8^{n-2}+6\times 4^{n}-4+(-4)^{n-4}=81×12n?4?8n?2+6×4n?4+(?4)n?4

小的直接處理就好了

然后發現這樣還是過不了,那就用擴展歐拉定理模上一個φ(109)=4×108\varphi(10^9)=4\times 10^8φ(109)=4×108然后根號分治預處理一下光速冪就可以過了。

時間復雜度O(20000+T)O(20000+T)O(20000+T)


code

#include<cstdio> #include<cstring> #include<algorithm> #include<cctype> #define ll long long using namespace std; const ll b[5]={0,0,0,0,24},T=20000,N=T+10,P=1e9,Phi=4e8; ll n,pw2[N],pw3[N],Pw2[N],Pw3[N]; ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}while(isdigit(c))x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f; } void print(ll x) {if(x>9)print(x/10);putchar(x%10+48);return;} ll G4(ll n) {n%=Phi;return Pw2[n/T]*Pw2[n/T]%P*pw2[n%T]%P*pw2[n%T]%P;} ll G8(ll n) {n%=Phi;return Pw2[n/T]*pw2[n%T]%P*G4(n)%P;} ll G12(ll n) {n%=Phi;return Pw3[n/T]*pw3[n%T]%P*G4(n)%P;} signed main() {pw2[0]=pw3[0]=Pw2[0]=Pw3[0]=1;for(ll i=1;i<=T;i++)pw2[i]=pw2[i-1]*2ll%P,pw3[i]=pw3[i-1]*3ll%P;for(ll i=1;i<T;i++)Pw2[i]=Pw2[i-1]*pw2[T]%P,Pw3[i]=Pw3[i-1]*pw3[T]%P;while(1){n=read();if(!n)break;if(n<=4){print(b[n]),putchar('\n');continue;}ll ans=81ll*G12(n-4);ans=ans-G8(n-2);ans=ans+6ll*G4(n-4);ans=ans+((n&1)?-1:1)*G4(n-4);print((ans%P+P)%P);putchar('\n'); }return 0; }

總結

以上是生活随笔為你收集整理的P2012-拯救世界2【EGF】的全部內容,希望文章能夠幫你解決所遇到的問題。

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