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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

dls的BM算法模板(线性递推问题,解决矩阵快速幂解决不了的问题)

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dls的BM算法模板(线性递推问题,解决矩阵快速幂解决不了的问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模板:往里面扔數就可以了(據說>=8個?)%%%dls

https://www.cnblogs.com/zzqsblog/p/6877339.html

#include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector<int> VI; typedef long long ll; typedef pair<int,int> PII; const ll mod=1000000007; ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll _,n; namespace linear_seq{const int N=10010;ll res[N],base[N],_c[N],_md[N];vector<ll> Md;void mul(ll *a,ll *b,int k){rep(i,0,k+k) _c[i]=0;rep(i,0,k) if (a[i]) rep(j,0,k) _c[i+j]=(_c[i+j]+a[i]*b[j])%mod;for (int i=k+k-1;i>=k;i--) if (_c[i])rep(j,0,SZ(Md)) _c[i-k+Md[j]]=(_c[i-k+Md[j]]-_c[i]*_md[Md[j]])%mod;rep(i,0,k) a[i]=_c[i];}int solve(ll n,VI a,VI b){ll ans=0,pnt=0;int k=SZ(a);assert(SZ(a)==SZ(b));rep(i,0,k) _md[k-1-i]=-a[i];_md[k]=1;Md.clear();rep(i,0,k) if (_md[i]!=0) Md.push_back(i);rep(i,0,k) res[i]=base[i]=0;res[0]=1;while ((1ll<<pnt)<=n) pnt++;for (int p=pnt;p>=0;p--){mul(res,res,k);if ((n>>p)&1){for (int i=k-1;i>=0;i--) res[i+1]=res[i];res[0]=0;rep(j,0,SZ(Md)) res[Md[j]]=(res[Md[j]]-res[k]*_md[Md[j]])%mod;}}rep(i,0,k) ans=(ans+res[i]*b[i])%mod;if (ans<0) ans+=mod;return ans;}VI BM(VI s) {VI C(1,1),B(1,1);int L=0,m=1,b=1;rep(n,0,SZ(s)) {ll d=0;rep(i,0,L+1) d=(d+(ll)C[i]*s[n-i])%mod;if (d==0) ++m;else if (2*L<=n) {VI T=C;ll c=mod-d*powmod(b,mod-2)%mod;while (SZ(C)<SZ(B)+m) C.pb(0);rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod;L=n+1-L; B=T; b=d; m=1;} else {ll c=mod-d*powmod(b,mod-2)%mod;while (SZ(C)<SZ(B)+m) C.pb(0);rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod;++m;}}return C;}int gao(VI a,ll n){VI c=BM(a);c.erase(c.begin());rep(i,0,SZ(c)) c[i]=(mod-c[i])%mod;return solve(n,c,VI(a.begin(),a.begin()+SZ(c)));} }; int main() {int t;scanf("%d",&t);while(t--){scanf("%lld",&n);vector<int>v;v.push_back(); //至少8項,越多越好。 printf("%lld\n",linear_seq::gao(v,n-1)%mod);} }

?

總結

以上是生活随笔為你收集整理的dls的BM算法模板(线性递推问题,解决矩阵快速幂解决不了的问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 激情二区| 日韩欧美中文字幕一区二区三区 | 国产porn| 国产美女菊爆在线播放APP | 一区二区三区在线免费 | 色偷偷888欧美精品久久久 | av一卡| 亚洲视频精品一区 | 日本www在线 | 天天摸天天操天天爽 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产一级全黄 | 精品国产色| 好吊色免费视频 | 国产欧美在线精品日韩 | 国产综合精品一区二区三区 | 日本在线加勒比 | 国产亚洲女人久久久久毛片 | 日韩欧美自拍偷拍 | av网址导航 | 亚洲三区在线观看无套内射 | 日本三级播放 | 欧美精品aaa| 久久久精品视频免费 | 天天做天天摸天天爽天天爱 | 欧美精品系列 | 免费一级特黄特色毛片久久看 | 欧美日韩国产一区二区三区 | 久久窝窝 | 日本免费一区二区三区四区 | 国产精品入口免费 | 日本久热 | 亚洲天天影视 | 日韩免费视频一区二区视频在线观看 | 欧美一区二区三区粗大 | jizz教师| 国产专区欧美专区 | 本站只有精品 | 高h av| 一个色亚洲 | 久久天 | 欧美在线看 | 久操免费在线视频 | 免费看黄色片的网站 | 99色精品 | 久久久久久久久久久福利 | 在线黄色网 | 成人黄色在线播放 | 成人h动漫精品一区二区无码 | 香蕉视频污在线观看 | 怡红院一区二区 | 国产成人精品久久二区二区91 | 日本熟妇浓毛 | 大粗鳮巴久久久久久久久 | 青草超碰| 天堂av网站 | 91看片在线 | 深夜福利免费视频 | 日产久久久久久 | 亚洲精品国产精品国自产在线 | 爱情岛亚洲首页论坛小巨 | 一级淫片免费看 | 午夜影院h | 麻豆最新 | 国产成人久久精品 | 在线尤物 | 怡红院精品视频 | 99欧美 | 欧美成人视屏 | 在线天堂视频 | 激情另类视频 | 欧美变态口味重另类在线视频 | 亚洲色婷婷一区二区三区 | 成人av电影在线观看 | 蜜桃传媒 | 久操视频在线观看免费 | 欧美顶级黄色大片免费 | 色香五月| 性欧美ⅴideo另类hd | 黑丝少妇喷水 | 好吊妞视频在线 | 中文字幕免费视频观看 | 日日躁夜夜躁aaaabbbb | 亚洲精品一区二区三区四区五区 | 日韩福利视频一区 | 日本午夜一区 | 成年人免费在线观看视频网站 | 亚洲精品中文字幕在线播放 | avtt在线观看 | 五月激情啪啪 | 免费日批网站 | 国内爆初菊对白视频 | 欧美视频区 | 91成人在线观看喷潮蘑菇 | 亚洲人成网站999久久久综合 | 日本特黄一级片 | 青青久久av北条麻妃黑人 | 久久精品久久久久久 | 亚洲色欲色欲www |