HDU1005(矩阵快速幂)
来源:互联网 发布:linux telnet传输文件 编辑:程序博客网 时间:2024/05/29 11:03
Description
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
Output
For each test case, print the value of f(n) on a single line.
Sample Input
1 1 31 2 100 0 0
Sample Output
25
Fn+3 Fn+2 Fn+2 Fn+1 a 1
= *
Fn+2 Fn+1 Fn+1 Fn b 0
#include<cstdio>using namespace std;int n,a,b;struct Matrix{ int m[2][2]; void init() { m[0][0]=a; m[0][1]=1; m[1][0]=b; m[1][1]=0; } void init0() { m[0][0]=a+b; m[0][1]=1; m[1][0]=1; m[1][1]=1; } void init2() { m[0][0]=1; m[0][1]=0; m[1][0]=0; m[1][1]=1; }};Matrix multiply(Matrix x,Matrix y){ Matrix res; for (int i = 0 ;i < 2; i++) { for (int j = 0 ;j < 2 ;j++) { res.m[i][j] = 0; for (int k = 0 ;k < 2 ;k++) res.m[i][j] += (x.m[i][k] * y.m[k][j]); res.m[i][j] %= 7; } } return res;}Matrix quickpow(Matrix s,int k){ Matrix res; res.init2(); while(k) { if(k&1) res = multiply(res ,s); k >>= 1; s = multiply(s ,s); } return res;}int main(){ while (scanf("%d%d%d",&a,&b,&n)&&(a||b||n)) { if(n==1||n==2) { printf("1\n"); continue; } Matrix ans; ans.init0(); Matrix t; t.init(); ans = multiply(ans ,quickpow(t ,n-2)); printf("%d\n",ans.m[0][1] % 7); } return 0;}
0 0
- HDU1005(矩阵快速幂)
- HDU1005 - Number Sequence (矩阵快速幂)
- 【HDU1005】Number Sequence(矩阵快速幂)
- HDU1005-Number Sequence-矩阵快速幂
- hdu1005(矩阵加速)
- hdu1005 循环节||矩阵快速幂取模
- 【hdu1005】矩阵快速乘法,递归二分形式
- Number Sequence(hdu1005矩阵二分幂)
- HDU1005矩阵相乘二分法
- poj 3070+hdu1005(斐波那契 矩阵)
- poj3070(矩阵快速幂,矩阵乘法)
- UVA10655矩阵快速幂(构造矩阵)
- 快速幂,矩阵快速幂(模板)
- 快速幂(矩阵快速幂)
- 快速矩阵快速幂
- 矩阵相关(研究总结,矩阵,矩阵快速幂)
- 矩阵快速幂(模板)
- hdu2604(矩阵快速幂)
- spring ioc aop
- Java多线程之内存可见性
- 聊天机器人学习笔记整理系列-发展历史
- SOCKET 常用函数的返回值分析
- RunLoop处理逻辑
- HDU1005(矩阵快速幂)
- 使用UGUI为角色添加血条
- Deep Learning in NLP (一)词向量和语言模型
- 计算机操作系统第四版答案===转载
- lightoj 1265 概率
- 有理想的程序员要知道的15件事
- 【MySQL 11】注释
- NHibernate常见问题及解决方法
- Ubuntu下安装zabbix步骤