日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Hdoj 1588 Gauss Fibonacci 【矩陣快速冪】

Hdoj 1588 Gauss Fibonacci 【矩陣快速冪】

來源:程序員人生   發布時間:2015-06-16 08:29:58 閱讀次數:2444次

Gauss Fibonacci

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2584 Accepted Submission(s): 1078

Problem Description
Without expecting, Angel replied quickly.She says: “I’v heard that you’r a very clever boy. So if you wanna me be your GF, you should solve the problem called GF~. ”
How good an opportunity that Gardon can not give up! The “Problem GF” told by Angel is actually “Gauss Fibonacci”.
As we know ,Gauss is the famous mathematician who worked out the sum from 1 to 100 very quickly, and Fibonacci is the crazy man who invented some numbers.

Arithmetic progression:
g(i)=k*i+b;
We assume k and b are both non-nagetive integers.

Fibonacci Numbers:
f(0)=0
f(1)=1
f(n)=f(n⑴)+f(n⑵) (n>=2)

The Gauss Fibonacci problem is described as follows:
Given k,b,n ,calculate the sum of every f(g(i)) for 0<=i

#include <cstdio> #include <iostream> #include <cstring> using namespace std; #define LL __int64 struct node{ LL num[3][3]; }; node e, a; LL n, m, k, b; node mul(node aa, node bb){ node c; for(int i = 1; i < 3; ++i){ for(int j = 1; j < 3; ++j){ c.num[i][j] = 0; for(int k = 1; k < 3; ++k){ c.num[i][j] = (c.num[i][j]+aa.num[i][k]*bb.num[k][j])%m; } } } return c; } node fa(node a, LL n){ node b = e; while(n){ if(n&1) b = mul(a, b); n >>= 1; a = mul(a, a); } return b; } node add(node aa, node bb){ node c; for(int i = 1; i < 3; ++i){ for(int j = 1; j < 3; ++j){ c.num[i][j] = (aa.num[i][j]+bb.num[i][j])%m; } } return c; } node dg(node p, LL k){ //這里很巧 if(k == 1) return p; else if(k&1) return add(dg(p, k-1), fa(p, k)); //這里就是A^(K⑴)+A^k else return mul(dg(p, k>>1), add(fa(p, k>>1), e));//這里就是 A^k+A^(k>>1); } int main(){ e.num[1][1] = e.num[2][2] = 1; e.num[1][2] = e.num[2][1] = 0; a.num[1][1] = a.num[1][2] = a.num[2][1] = 1; a.num[2][2] = 0; while(cin >> k >> b >> n >> m){ node ak = fa(a, k); node ab = fa(a, b); node ans = dg(ak, n-1); ans = add(e, ans); ans = mul(ab, ans); cout << ans.num[1][2]<< endl; } return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成年网站在线 | 国产精品一区二区久久久 | 亚洲精品久久久久久下一站 | 91重口变态 | 天堂在线中文资源 | 亚洲三区在线 | 综合久久亚洲 | 国产福利电影网 | 韩日精品一区二区 | 国产一区二区三区精品久久久 | 国产精品99久久久久久动医院 | 51ⅴ精品国产91久久久久久 | 99久久免费观看 | 精品视频在线看 | 秋霞在线观看视频 | 91麻豆国产| 国产精品久久久久久久久免费看 | 亚洲精品18 | 午夜精品福利一区二区三区蜜桃 | 美女视频黄色免费 | 国产日产久久高清欧美一区 | 国产精品久久久久久久7电影 | www.黄色片视频 | 久久久久久91 | 国产精品久久久久久久久久久久午夜片 | 久久一区二区国产 | 亚洲国产精品久久 | 91露脸的极品国产系列 | 成年人视频免费在线观看 | a毛毛片 | 欧美黑人xxxxx | 在线观看免费av网 | 久久久久国产一区 | 国产精品一区二区三区四区在线观看 | 爱情岛论坛首页永久网址 | 毛片在线视频 | 在线观看福利影院 | 91看电视 | 欧美一区二区免费视频 | 婷婷久久久 | 亚洲精品在线成人 |