M斐波那契数列
来源:互联网 发布:自救手环 淘宝 编辑:程序博客网 时间:2024/06/02 04:06
M斐波那契数列F[n]是一种整数数列,它的定义如下:
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
0 1 06 10 2
060
现在还是一知半解,所以还是先记录下来,以后我们再去细细的分析。主要是,我们以后要穿送指针的话,我们就把他包装成结构体,直接传送结构体,不要传送指针。
#include <bits/stdc++.h>using namespace std;typedef long long ll;ll mod = 1e9+7;ll mod2 = 1e9+6;struct matrix{ll base[2][2];};struct matrix multi( struct matrix a,struct matrix b ){struct matrix ans;memset(ans.base,0,sizeof(ans.base));for(int i=0; i<2; i++){for(int j=0; j<2; j++){for(int k=0; k<2; k++){ans.base[i][j] = (ans.base[i][j] + (a.base[i][k]*b.base[k][j])%mod2)%mod2;}}}return ans;}struct matrix quick_pow(struct matrix a,ll m){struct matrix ans;ans.base[0][0] = ans.base[1][1] = 1;ans.base[0][1] = ans.base[1][0] = 0;while( m ){if( m&1 )ans = multi(ans,a);m >>= 1;a = multi(a,a);}return ans;}ll quickint_pow(ll a,ll m){ll ans = 1;while( m ){if( m&1 )ans = (ans*a)%mod;m >>= 1;a = (a*a)%mod;}return ans;}int main(){ll a,b,n;struct matrix aa,ans;aa.base[0][0] = aa.base[0][1] = aa.base[1][0] = 1;aa.base[1][1] = 0;while( cin >> a >> b >> n ){if( n==0 ){cout << a << endl;continue;}ans = quick_pow(aa,n-1);cout << ( quickint_pow(a,ans.base[0][1]) * quickint_pow(b,ans.base[0][0]) )%mod << endl;}return 0;}
阅读全文
0 0
- M斐波那契数列
- HDU4549 M斐波那契数列
- M斐波那契数列
- 4549 M斐波那契数列
- M斐波那契数列
- hdu4549 M斐波那契数列
- M斐波那契数列 HDU
- M斐波那契数列
- hdu 4549 M斐波那契数列
- hdu 4549 M斐波那契数列
- M斐波那契数列 hdu 4549
- HDU 4549 M斐波那契数列
- hdu 4549 M斐波那契数列
- hdu 4549 M斐波那契数列 数论 矩阵
- hdu 4549——M斐波那契数列
- hdu-4549 M斐波那契数列 && nyoj - 1000
- HDU 4549 M斐波那契数列
- hdu4549 M斐波那契数列(矩阵快速幂)
- 集合collection 下List接口和Set接口
- B. Gleb And Pizza #430 (Div. 2)
- python list 排序
- session和cookie的区别
- 常用数据库的驱动程序名,驱动类名以及URL
- M斐波那契数列
- 题目1045:百鸡问题
- zlib压缩库解压失败的问题
- 关于CGI
- CodeForces 526F Pudding Monsters (分治)
- IDEA的常用操作(快捷键)
- 使用C/C++输出各种进制
- leetcode58. Length of Last Word
- 自定义网络请求