HRBUST 1430 神秘植物 (矩阵快速幂)
来源:互联网 发布:淘宝的品质退款包括 编辑:程序博客网 时间:2024/05/17 04:41
思路转载:http://blog.csdn.net/mengxiang000000/article/details/50962375
题目:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1430
代码:
#include<stdio.h>#include<string.h>#define MOD 1000000007using namespace std;struct point{ long long int m[2][2];}ans,base;point mliti(point a,point b){ point temp; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { temp.m[i][j]=0; for(int k=0;k<2;k++) { temp.m[i][j]=(temp.m[i][j]+a.m[i][k]*b.m[k][j])%MOD; } } } return temp;}long long int fast(long long int n){ base.m[0][0]=base.m[1][1]=3; base.m[0][1]=base.m[1][0]=1; ans.m[0][0]=ans.m[1][1]=1; ans.m[0][1]=ans.m[1][0]=0; while(n) { if(n%2==1) ans=mliti(ans,base); base=mliti(base,base); n=n/2; } return ans.m[0][0];}int main(){ long long int t; while(~scanf("%lld",&t)) { printf("%lld\n",fast(t)); }}
算是一种类型题吧。
先找规律,
我们用Fn表示蓝色(向上)的三角形,用Sn来表示白色(向下)的三角形,
N 0 1 2 3 4 Fn13103636*3+28 Sn0162828*3+36即:Fn=Fn-1*3+Sn-1
Sn=Sn-1*3+Fn-1。
3 1 Fn-1 0 Fn
* =
? ? Sn-1 1 ?
Sn=Sn-1*3+Fn-1
3 1 Fn-1 0 Fn
* =
1 3 Sn-1 1 Sn
3 1 ^n = Fn ?
1 3 Sn ?
0 0
- HRBUST 1430 神秘植物 (矩阵快速幂)
- hrbust 1430 神秘植物 [递推+矩阵快速幂]
- hrbust 1430 哈理工oj 1430 神秘植物【递推+矩阵快速幂】
- 哈理工OJ 1430 神秘植物(矩阵快速幂+矩阵构造)
- hrbust 1430 矩阵快速幂
- HRBUST 1126 Final Destination II (矩阵快速幂)
- hrbust 1401 九连环(矩阵快速幂)
- hrbust 又是Fibonacci (矩阵快速幂)
- hrbust 1126 HLG 矩阵快速幂
- hrbust 2190 矩阵快速幂模板
- HRBUST 1855 幼稚园的矩阵(矩阵快速幂)
- hrbust/哈理工oj 1592 六芒星【矩阵快速幂】
- Hrbust 1401 九连环【递推+矩阵快速幂】
- 植物中的神秘数字
- hrbust/哈理工oj 1126 Final Destination II【矩阵快速幂+递推】
- hrbust/哈理工oj 1787 New Fibonacci Number【欧拉降幂+矩阵快速幂】
- hrbust 1375 The Active Leyni【暴力打表+递推+矩阵快速幂】
- poj3070(矩阵快速幂,矩阵乘法)
- 9个常用iptables配置实例
- shell--内建命令--exec
- 求算两个字符串之间的编辑距离
- C++删除文件夹及其子文件夹中的文件功能实现(Unicode)
- c++第二次上机实验
- HRBUST 1430 神秘植物 (矩阵快速幂)
- 按对象属性排序
- jquery根据name取值
- Internet命名规则和地址划分约定
- Codeforces 15E Trangles (计数)
- 从此不求人:自主研发一套PHP前端开发框架 (1)
- 鼠标事件回放
- C++实验2-标准体重
- 一些开源的数据挖掘系统/软件