Fibonacci (POJ
来源:互联网 发布:广东省教育网络平台 编辑:程序博客网 时间:2024/06/13 00:01
In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequence are:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
An alternative formula for the Fibonacci sequence is
.
Given an integer n, your goal is to compute the last 4 digits of Fn.
Input
The input test file will contain multiple test cases. Each test case consists of a single line containing n (where 0 ≤ n ≤ 1,000,000,000). The end-of-file is denoted by a single line containing the number −1.
Output
For each test case, print the last four digits of Fn. If the last four digits of Fn are all zeros, print ‘0’; otherwise, omit any leading zeros (i.e., print Fn mod 10000).
Sample Input
0
9
999999999
1000000000
-1
Sample Output
0
34
626
6875
Hint
As a reminder, matrix multiplication is associative, and the product of two 2 × 2 matrices is given by
.
Also, note that raising any 2 × 2 matrix to the 0th power gives the identity matrix:
详情见http://blog.csdn.net/coldfresh/article/details/70948818
代码几乎一模一样,没有本质的改动,只是系数矩阵m不同
.
代码:
import java.util.Scanner;public class Main { public static void main(String[]args) { Scanner sc=new Scanner(System.in); M m=new M(); m.a[0][0]=1; m.a[0][1]=1; m.a[1][0]=1; m.a[1][1]=0; M o=new M(); o.a[0][0]=1; o.a[1][1]=1; for(;;) { int n=sc.nextInt(); if(n==-1) break; M k=o.copy(); M l=m.copy(); while(n>0) { if((n&1)==1) { k=k.muip(l); } l=l.muip(l); n>>=1; } System.out.println(k.a[1][0]); } }}class M{ long a[][]=new long[2][2]; M muip(M x) { M m=new M(); for(int i=0;i<2;i++) for(int j=0;j<2;j++) { m.a[i][j]=(a[i][0]*(x.a[0][j]%10000)+a[i][1]*(x.a[1][j]%10000))%10000; } return m; } M copy() { M m=new M(); for(int i=0;i<2;i++) for(int j=0;j<2;j++) { m.a[i][j]=a[i][j]; } return m; }}
- Fibonacci (POJ
- Fibonacci POJ
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- poj 3070 Fibonacci
- POJ 3070 Fibonacci
- poj 3070:Fibonacci
- POJ FIBONACCI (3070)
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci (矩阵)
- POJ 3070 Fibonacci
- POJ 3070 Fibonacci
- poj-3070-Fibonacci
- poj 3070 Fibonacci
- POJ 3070 Fibonacci
- bzoj1412: [ZJOI2009]狼和羊的故事
- Windows10 Spark单机开发环境的搭建(Python)
- 《APUE》读书笔记-第十六章网络IPC:套接字
- C中的volatile用法
- PHP设计模式系列(四):工厂方法模式
- Fibonacci (POJ
- C/C++实习面试(一)
- 数组9:数字在排序数组中出现的次数
- Activty跳转及进度系列控件
- 数组10:数组中只出现一次的数字
- vlc-for-android
- python绘制树和森林
- Linux命令学习笔记(一)
- Retrofit学习二:基础用法