Fibonacci n<10^10次方它的后四位

原创 2012年03月31日 12:19:34
#include <iostream>
#include <cstdio>

using namespace std;

struct M
{
   int	m[4][4];
};

M mul(M a,M b)
{
   M c;
   c.m[0][0]=(a.m[0][0]*b.m[0][0]+a.m[0][1]*b.m[1][0])%10000;
   c.m[0][1]=(a.m[0][0]*b.m[0][1]+a.m[0][1]*b.m[1][1])%10000;
   c.m[1][0]=(a.m[1][0]*b.m[0][0]+a.m[1][1]*b.m[1][0])%10000;
   c.m[1][1]=(a.m[1][0]*b.m[0][1]+a.m[1][1]*b.m[1][1])%10000;
   return c;
}

M creatone()
{
	M c;
	c.m[0][0]=1;
	c.m[0][1]=1;
	c.m[1][0]=1;
	c.m[1][1]=0;
    return c;
}

M fibonacci(int k)
{
	if(k==1) return creatone();
	if(k%2==0) 
	{
		M en = fibonacci(k/2);
		return mul(en,en);
	}
	else 
	{
		M en = fibonacci(k/2);
		return mul(mul(en,en),creatone());
	}
	return creatone();
}
void init()
{
     int n;
	 while(cin>>n)
	 {
		if(n==-1)break;
		if(n==0){cout<<0<<endl;continue;}
		M one = fibonacci(n);;
		int value = one.m[0][1];
		cout<<value%10000<<endl;
	 }
}
int main()
{
	init();
	return 0;
}

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

相关文章推荐

HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵快速幂)

HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵快速幂) ACM 题目地址:HDU 3117 Fibonacci Numbers 题意:  ...
  • hcbbt
  • hcbbt
  • 2014-08-05 01:18
  • 1692

ACM--steps--2.2.1--求fibonacci数列的前四位

Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su...

Fibonacci的前四位

Description 2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f...

第十天 :让一线程执行10次,然后让二线程执行10,然后一执行,二执行,这样循环50次,编写程序

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util...

HDU 3117 由n^k的前4位,推出(斐波那契)矩阵^k的前四位

题意:求出第n项斐波那契数,如果位数小于8直接输出,大于8的只输出前4位和后4位。 思路:后4位,很好做,矩阵快速幂就可以了,(至于矩阵快速幂的原理就不介绍了) 初始矩阵 系数矩阵 ...

求第n个fibonacci数

  • 2015-12-29 19:53
  • 267B
  • 下载

《java编程思想》第四章练习10找出所有四位数的吸血鬼数

题目描述:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如下列数字都是吸血鬼数...

2-9的1-10次方的表

  • 2012-10-15 14:42
  • 12KB
  • 下载

HDU 3117Fibonacci Numbers(求斐波那契前四位与后四位 数论知识+矩阵快速幂)

Fibonacci Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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