UVA - 12470 Tribonacci

原创 2016年08月29日 21:11:21

题目:



这个题目,我主要就是被题目名字吸引,所以才把这个水题做了一下。

看题目名字就知道是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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Tribonacci数列前n项和的求解问题

Tribonacci数列前n项和的求解问题

JavaScript趣题:Tribonacci数列

下面,我想介绍一下Fibonacci(斐波那契数列)的大兄弟,Tribonacci数列。 正如它的名字所暗示的那样,它和斐波那契数列方式很相像,但又有不同的地方。 如果我们用[1,1,1]开始这个数列...
  • esir82
  • esir82
  • 2016年09月24日 09:56
  • 954

机器人足球2d uva球队代码

  • 2009年12月14日 22:05
  • 2.77MB
  • 下载

UVA 378 Intersecting Lines POJ 1249【直线位置情况简单判定】

题目大意:判断一组两条直线(是直线不是线段)位置情况:                     1,相交,按照格式输出交点;                      2,平行,输出“NONE“;...
  • J_Dark
  • J_Dark
  • 2013年05月03日 00:21
  • 1616

uva最全ac代码

  • 2013年07月04日 23:19
  • 4.18MB
  • 下载

UVA1131 最优三角形剖分

  • 2017年11月04日 09:19
  • 16KB
  • 下载

算法竞赛入门经典 UVa201Squares

本题有以下注意点: 1.这一题最初按着书上的一问来理解的,但是对着原题的示例手动计算怎么都不对,重新读了原文,发现翻译有误差。 书上说“H i j和V i j分别代表边(i,j)-(i,j+1)和(i...

UVA沃尔多夫在哪里

  • 2014年12月11日 19:03
  • 3KB
  • 下载

uva531 LCS算法

  • 2015年04月30日 10:46
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA - 12470 Tribonacci
举报原因:
原因补充:

(最多只允许输入30个字)