UVA - 12470 Tribonacci
来源:互联网 发布:淘宝活动预热 编辑:程序博客网 时间:2024/06/05 15:06
题目:
这个题目,我主要就是被题目名字吸引,所以才把这个水题做了一下。
看题目名字就知道是3阶斐波那契数列的意思,然后看后面那么多输入输出一下就懂了什么意思。
(事实上我真的没有看正文)
既然是3阶齐次线性递归,那用矩阵快速幂一下就出来了。
代码很简单,直接把我的另外一篇博客稍微改改就出来了。
代码:
#include<iostream>using namespace std;int n = 3;int mod = 1000000009;long long in[3][3] = { 1, 1, 1, 1, 0, 0, 0, 1, 0 };long long list[3][3], temp[3][3];void pro(long long l1[][3], long long l2[][3], long long t[][3])//t=l1*l2{for (int i = 0; i < n; i++)for (int j = 0; j < n; j++){t[i][j] = 0;for (int k = 0; k < n; k++)t[i][j] = (t[i][j] + l1[i][k] * l2[k][j]) % mod;}}void f(long long num)//让list是in的num次方{if (num == 0){for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)list[i][j] = (i == j);return;}f(num / 2);pro(list, list, temp);if (num % 2)pro(temp, in, list);else for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)list[i][j] = temp[i][j];}int main(){long long k;while (cin >> k){if (k == 0)break;if (k == 1)cout << 0 << endl;else if (k == 2)cout << 1 << endl;else{f(k - 3);cout << (list[0][0] * 2 + list[0][1]) % mod << endl;}}return 0;}
0 0
- uva 12470 Tribonacci
- UVA - 12470 Tribonacci
- UVA - 12470 Tribonacci 矩阵快速幂
- JavaScript趣题:Tribonacci数列
- 泰波拿契數 (Tribonacci Number) 即把費波拿契數
- 名企的笔试口试题 (Tribonacci Number)
- Tribonacci数列前n项和的求解问题
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- poj 2249 && uva 530
- JavaWeb工程间依赖失败
- 稳定排序和不稳定排序
- sed用法实例 (内容不全)
- MVC设计模式(以Django为例)
- UVA - 12470 Tribonacci
- Java 学习笔记(0x03) 命名规则
- 编程之美:黑白球问题
- 人脸识别中常用的几种分类器
- 大神们都在用的工具推荐
- 机房收费系统(六)———多角度看机房收费
- C语言中指针和数组的几种访问形式
- HTML5中 基本用法及属性 韩俊强的博客
- 16位汇编 在代码段中使用数据