标签:cnt ch read ProjectEuler654 int include getchar
我,ycl:BM是什么早就忘了!
毕老爷:那你们可以做一做这道题练练BM板子啊。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //Achen 2 #include<bits/stdc++.h> 3 #define For(i,a,b) for(int i=(a);i<=(b);i++) 4 #define Rep(i,a,b) for(int i=(a);i>=(b);i--) 5 #define Formylove return 0 6 const int N=1e5+7,p=1e9+7; 7 typedef long long LL; 8 typedef double db; 9 using namespace std; 10 int n,m; 11 LL f[15007][5007]; 12 13 template<typename T> void read(T &x) { 14 char ch=getchar(); T f=1; x=0; 15 while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); 16 if(ch=='-') f=-1,ch=getchar(); 17 for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f; 18 } 19 20 int main() { 21 freopen("1.in","r",stdin); 22 //freopen("biao.in","w",stdout); 23 read(m); read(n); 24 For(i,1,m) f[1][i]=1; 25 For(i,1,n) { 26 if(i>1) For(j,1,m) f[i][j]=f[i-1][m-j]; 27 For(j,1,m) f[i][j]=(f[i][j]+f[i][j-1])%p; 28 } 29 printf("%lld\n",f[14555][m]); 30 //printf("%d\n",n); 31 //For(i,1,n) printf("%lld ",f[i][m]); 32 //printf("%lld\n",f[n][m]); 33 Formylove; 34 }n^2暴力
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> #include<set> #include<map> #define Formylove return 0 #define For(i,a,b) for(int i=(a);i<=(b);i++) #define Rep(i,a,b) for(int i=(a);i>=(b);i--) const int N=15007,p=1e9+7; typedef long long LL; typedef double db; using namespace std; int n,cnt,fail[N]; vector<LL>f[N]; LL a[N],delta[N]; template<typename T>void read(T &x) { char ch=getchar(); x=0; T f=1; while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') f=-1,ch=getchar(); for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f; } LL ksm(LL a,LL b) { LL rs=1,bs=a%p; while(b) { if(b&1) rs=rs*bs%p; bs=bs*bs%p; b>>=1; } return rs; } #define ANS int main() { #ifdef ANS freopen("biao.in","r",stdin); freopen("shizi.out","w",stdout); #endif read(n); For(i,1,n) read(a[i]); For(i,1,n) { LL tp=0; int up=f[cnt].size(); For(j,0,up-1) tp=(tp+f[cnt][j]*a[i-j-1]%p)%p; if(tp==a[i]) continue; delta[i]=(a[i]-tp+p)%p; fail[cnt]=i; ++cnt; if(cnt==1) { f[cnt].resize(i); continue; } LL mul=delta[i]*ksm(delta[fail[cnt-2]],p-2)%p,fmul=(p-mul)%p; f[cnt].resize(i-fail[cnt-2]-1); f[cnt].push_back(mul); up=f[cnt-2].size(); For(j,0,up-1) f[cnt].push_back(fmul*f[cnt-2][j]%p); up=f[cnt-1].size(); if(f[cnt].size()<f[cnt-1].size()) f[cnt].resize(up); For(j,0,up-1) f[cnt][j]=(f[cnt][j]+f[cnt-1][j])%p; } int up=f[cnt].size(); printf("%d\n",up); For(i,0,up-1) printf("%lld ",f[cnt][i]); Formylove; }BM出递推
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //Achen 2 #include<bits/stdc++.h> 3 #define For(i,a,b) for(int i=(a);i<=(b);i++) 4 #define Rep(i,a,b) for(int i=(a);i>=(b);i--) 5 #define Formylove return 0 6 const int N=1e5+7,p=1e9+7; 7 typedef long long LL; 8 typedef double db; 9 using namespace std; 10 int cnt; 11 LL A[N],f[N],n; 12 13 template<typename T> void read(T &x) { 14 char ch=getchar(); T f=1; x=0; 15 while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); 16 if(ch=='-') f=-1,ch=getchar(); 17 for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f; 18 } 19 20 LL rs[N],bs[N],tp[N]; 21 void cheng(LL a[],LL b[]) { 22 For(i,0,cnt*2) tp[i]=0; 23 For(i,0,cnt-1) For(j,0,cnt-1) 24 (tp[i+j]+=a[i]*b[j])%=p; 25 Rep(i,cnt*2-2,cnt) if(tp[i]) 26 For(j,0,cnt-1) 27 (tp[i-j-1]+=A[j]*tp[i]%p)%=p; 28 For(i,0,cnt-1) a[i]=tp[i]; 29 } 30 31 void ksm(LL b) { 32 while(b) { 33 if(b&1) cheng(rs,bs); 34 cheng(bs,bs); 35 b>>=1; 36 } 37 } 38 39 int main() { 40 freopen("shizi.out","r",stdin); 41 //freopen("shizi.out","w",stdout); 42 read(cnt); 43 For(i,0,cnt-1) read(A[i]); 44 read(n); 45 rs[0]=1; bs[1]=1; ksm(n-1); 46 For(i,1,cnt) read(f[i]); 47 LL ans=0; 48 For(i,0,cnt-1) ans=(ans+f[i+1]*rs[i]%p)%p; 49 printf("%lld\n",ans); 50 Formylove; 51 }多项式取模
标签:cnt,ch,read,ProjectEuler654,int,include,getchar 来源: https://www.cnblogs.com/Achenchen/p/10518986.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。