国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

矩陣快速冪--多校聯盟

2019-11-06 06:21:08
字體:
來源:轉載
供稿:網友

f(x+1)=f(x)+f(x?1)+sin(πx2)。

正常fibonacci就是

1 1 1 0

然后旋轉矩陣: 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0

最后: [ 1 1 1 0 0 0 ] , [ 1 0 0 0 0 0 ] , [ 0 0 0 1 0 0 ] , [ 0 0 0 0 1 0 ] , [ 0 0 0 0 0 1 ] , [ 0 0 1 0 0 0 ] 他得n-2乘上[f2,f1,0,-1,0,1]T 因為sin是循環的~就好了

#include <cstdio>#include <iostream>#include <cstring>using namespace std;const long long MOD = 1000000007;struct Matrix{ long long m[6][6];};long long aa,bb,nn;Matrix Mul(Matrix a ,Matrix b){ Matrix tmp; memset(tmp.m,0,sizeof(tmp.m)); for(int i = 0 ; i < 6 ; i++) for(int j = 0 ; j < 6 ;j++) for(int k = 0 ; k < 6; k++) tmp.m[i][j] = (tmp.m[i][j]+a.m[i][k]*b.m[k][j])%MOD ; return tmp;}Matrix qpow(Matrix a,long long n){ Matrix tmp; memset(tmp.m,0,sizeof(tmp.m)); for(long long i = 0 ; i < 6 ;i++) tmp.m[i][i] = 1; while(n){ if(n & 1) tmp = Mul(tmp,a); n>>=1; a = Mul(a,a); } return tmp;}void sov(){ Matrix tmp; memset(tmp.m,0,sizeof(tmp.m)); tmp.m[0][0] = tmp.m[0][1] = tmp.m[0][2] = tmp.m[1][0] = tmp.m[2][3] = tmp.m[3][4] = tmp.m[4][5] = tmp.m[5][2] = 1; tmp = qpow(tmp,nn-2); long long ans = ((bb*tmp.m[0][0]+aa*tmp.m[0][1]-tmp.m[0][3]+tmp.m[0][5])%MOD+MOD)%MOD; cout<<ans<<"/n";}int main(){ while(cin>>aa>>bb>>nn){ if(nn == 1) cout<<aa<<"/n"; else if(nn == 2) cout<<bb<<"/n"; else sov(); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 托克逊县| 汾西县| 阳谷县| 广南县| 加查县| 吉隆县| 城步| 巴彦淖尔市| 浦江县| 民和| 苏尼特左旗| 青岛市| 安顺市| 兰州市| 开阳县| 白沙| 石泉县| 资兴市| 苏尼特右旗| 铁力市| 牙克石市| 襄汾县| 怀宁县| 龙陵县| 平度市| 广东省| 南溪县| 饶阳县| 东阿县| 株洲县| 农安县| 龙游县| 屏东县| 西吉县| 托克逊县| 沂水县| 津南区| 武汉市| 南开区| 禄劝| 花莲市|