博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛咕 P3702 [SDOI2017]序列计数
阅读量:5310 次
发布时间:2019-06-14

本文共 1241 字,大约阅读时间需要 4 分钟。

和https://www.cnblogs.com/xzz_233/p/10060753.html一样,都是多项式快速幂,还比那个题水。

\(a[i]\)表示\([1,m]\)中$ \mod p\(余\)i\(的数的个数,\)f[i][j]\(表示用\)i\(个\)[1,m]\(中的数凑出\)j$的方案数

那么转移方程是\(f[i][j]=\sum_{k=0}^{p-1}f[i-1][(j-k)\mod m]\times a[k]\)

直接多项式快速幂即可

但是还有2条件,至少选一个质数,其实就是全都能选的减去不选质数的方案数

另外,这个模数要用,贼简单,懒得写了,咕咕咕

#include
#define il inline#define vd void#define mod 20170408#define M 4491typedef long long ll;il int gi(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; ch=getchar(); } while(isdigit(ch))x=x*10+ch-'0',ch=getchar(); return x*f;}typedef std::complex
cp;int n,m,p,ANS;int rev[257],N,lg;cp FA[257],FB[257],GA[257],GB[257],omg[257],inv[257];struct naive{ int t[100]; il int& operator [](int x){return t[x];}};il vd fft(cp*A,int n,cp*omg){ for(int i=0;i
i)std::swap(A[rev[i]],A[i]); for(int o=1;o
<<=1) for(cp*p=A;p!=A+n;p+=o<<1) for(int i=0;i
>1]>>1)|((i&1)<
>=1; } ANS+=ans[0]; static int pri[20000000],pr=0; static bool yes[20000001]; for(int i=0;i
>=1; } ANS-=ans[0]; printf("%d\n",(ANS+mod)%mod); return 0;}

转载于:https://www.cnblogs.com/xzz_233/p/10072209.html

你可能感兴趣的文章
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>