P2012-拯救世界2【EGF】

1|0正题

题目链接:https://www.luogu.com.cn/problem/P2012


1|1题目大意

12种东西排列成长度为n的序列,要求前四种出现奇数次,后四种出现偶数次,求方案。T组数据,对109取模。

1n<263,1T2×105


1|2解题思路

显然是EGF,没有限制的话就是ex,奇数就是exex2,偶数就是ex+ex2,这些都是老生常谈了。

然后答案就是

n!×(exex2)4(ex+ex2)4(ex)4

然后解出来就是

F(x)=n!×1256×(e12x4e8x+6e4x4+e4x)

F(x)[n]=1256×(12n4×8n+6×4n4+(4)n)

然后发现256没有逆元,但是因为这些底数都含有256的因数2所以

=81×12n48n2+6×4n4+(4)n4

小的直接处理就好了

然后发现这样还是过不了,那就用扩展欧拉定理模上一个φ(109)=4×108然后根号分治预处理一下光速幂就可以过了。

时间复杂度O(20000+T)


1|3code

#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; }

__EOF__

本文作者QuantAsk
本文链接https://www.cnblogs.com/QuantAsk/p/14915503.html
关于博主:退役OIer,GD划水选手
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   QuantAsk  阅读(69)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示