博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵乘法 POJ3070 Fibonacci
阅读量:5344 次
发布时间:2019-06-15

本文共 1975 字,大约阅读时间需要 6 分钟。

Fibonacci
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 15215   Accepted: 10687

Description

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

099999999991000000000-1

Sample Output

0346266875

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:

.

Source

 
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int n,a[2][2],b[2][2]; 7 void mul(int a[2][2],int b[2][2],int ans[2][2]){ 8 int t[2][2]; 9 for(int i=0;i<2;i++)10 for(int j=0;j<2;j++){11 t[i][j]=0;12 for(int k=0;k<2;k++) t[i][j]=(t[i][j]+a[i][k]*b[k][j])%10000; 13 }14 for(int i=0;i<2;i++)15 for(int j=0;j<2;j++) ans[i][j]=t[i][j];16 } 17 int main(){18 while(scanf("%d",&n)){19 if(n==-1) return 0;20 a[0][0]=a[1][0]=a[0][1]=b[0][0]=b[1][1]=1;21 a[1][1]=b[1][0]=b[0][1]=0;22 while(n){23 if(n&1) mul(a,b,b);24 n>>=1;25 mul(a,a,a);26 }27 printf("%d\n",b[1][0]);28 }29 return 0;30 }

 

转载于:https://www.cnblogs.com/sdfzxh/p/7148213.html

你可能感兴趣的文章
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
Linux远程登录
查看>>
Linux自己安装redis扩展
查看>>
HDU 1016 Prime Ring Problem(dfs)
查看>>
C#中结构体与字节流互相转换
查看>>
session和xsrf
查看>>
Linux目录结构
查看>>
luoguP3414 SAC#1 - 组合数
查看>>