hdu 4549 M斐波那契数列
来源:互联网 发布:吃饭前拍照知乎 编辑:程序博客网 时间:2024/06/06 04:16
M斐波那契数列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2833 Accepted Submission(s): 849
Problem Description
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]的值吗?
Input
输入包含多组测试数据;
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
Output
对每组测试数据请输出一个整数F[n],由于F[n]可能很大,你只需输出F[n]对1000000007取模后的值即可,每组数据输出一行。
Sample Input
0 1 06 10 2
Sample Output
060
Source
2013金山西山居创意游戏程序挑战赛——初赛(2)
这题就是两边取下对数然后构造矩阵就好了,由于是对指数做的操作,所以矩阵快速幂的时候要用下欧拉定理,补下快速幂模板。
#include<stdio.h>#include<algorithm>#include<string>#include<string.h>#include<iostream>using namespace std;#define ll long long#define MOD 1000000007#define F(x,a,b) for (int x=a;x<=b;x++)#define _fast F(i,1,3)F(j,1,3)F(k,1,3) b[i][j]=(b[i][j]+a[i][k]%(MOD-1)*a[k][j]%(MOD-1))%(MOD-1);#define _ffast F(i,1,3)F(j,1,3)F(k,1,3) b[i][j]=(b[i][j]+a[i][k]%(MOD-1)*c[k][j]%(MOD-1))%(MOD-1);#define Orz F(i,1,3)F(j,1,3)c[i][j]=a[i][j];#define reset F(i,1,3)F(j,1,3) {a[i][j]=b[i][j];b[i][j]=0;}#define me(x) memset(x,0,sizeof(x))ll n,a[4][4],b[4][4],c[4][4],aa,bb;void fastmat(ll u){if (u==1||u==0) return;if (u&1){fastmat(u-1);_ffast reset}else{fastmat(u/2);_fast reset}}ll pow(ll a,ll b){if (!b) return 1;if (b&1) {return pow(a,b-1)*a%MOD;}else{ll t=pow(a,b/2)%MOD;return t*t%MOD;}}int main(){ while (cin>>aa>>bb>>n) {me(a);a[1][1]=1;a[1][2]=1;a[2][1]=1;a[3][2]=1;Orz if (n<2){if (n==0){cout<<aa<<endl;continue;}else{cout<<bb<<endl;continue;}} if (!a||!b){cout<<"0"<<endl;continue;} fastmat(n-1); cout<<((pow(aa,a[1][2])%MOD)*(pow(bb,a[1][1])%MOD))%MOD<<endl;}}
0 0
- M斐波那契数列 HDU
- 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斐波那契数列
- HDU 4549 M斐波那契数列
- M斐波那契数列 - HDU 4549 费马小定理
- hdu 4549 M斐波那契数列
- HDU 4549 M斐波那契数列
- hdu 4549 M斐波那契数列
- HDU 4549 M斐波那契数列
- hdu 4549 M斐波那契数列
- 4549 M斐波那契数列
- 大数相除算法
- ToggleButton 点击更换图片的方法
- Socket,IP,端口,TCP,UDP
- ※ Leetcode - Dynamic Programming - 119. Pascal's Triangle II(倒叙滚动数组求解杨辉三角第k行)
- ToggleButton按钮
- hdu 4549 M斐波那契数列
- KMP算法
- (NYoj 325 zb的生日 和 456 邮票分你一半) 两个一样的题目不同的处理方法。(注意看题目中参数的较小值)
- Hdu 3691 Nubulsa Expo(无向图最小割)
- PyQt5教程(二)——菜单与工具栏
- git clone 一些简单笔记
- jquery截取图片后,ajax异步提交该图片
- Mysql SQL基础整理
- 智能厨房重构-项目分包