poj3070 求斐波那契数列第n项 ——矩阵快速幂
题目:http://poj.org/problem?id=3070
用矩阵快速幂加速递推。
代码如下:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int n,p=;
- struct Matrix{
- int a[][];
- Matrix operator * (const Matrix &y) const
- {
- Matrix x;
- memset(x.a,,sizeof x.a);
- for(int i=;i<=;i++)
- for(int k=;k<=;k++)
- for(int j=;j<=;j++)
- x.a[i][j]+=y.a[i][k]*a[k][j];
- return x;
- }
- }m,ans;
- void mod()
- {
- m.a[][]%=p;m.a[][]%=p;//
- m.a[][]%=p;m.a[][]%=p;
- ans.a[][]%=p;ans.a[][]%=p;
- }
- int main()
- {
- while(scanf("%d",&n)==)
- {
- if(n==-)return ;
- memset(m.a,,sizeof m.a);
- memset(ans.a,,sizeof ans.a);
- m.a[][]=;m.a[][]=;
- m.a[][]=;m.a[][]=;
- ans.a[][]=;ans.a[][]=;
- if(!n){printf("0\n");continue;}
- if(n==){printf("1\n");continue;}
- if(n==){printf("1\n");continue;}
- n--;//!
- while(n)
- {
- if(n&)ans=ans*m;
- m=m*m;
- mod();
- n=(n>>);
- }
- printf("%d\n",ans.a[][]%p);
- }
- return ;
- }
poj3070 求斐波那契数列第n项 ——矩阵快速幂的更多相关文章
- 黑马入学基础测试(三)求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
.获得用户的输入 计算 3打印就行了. 这里用到了java.util.Scanner 具体API 我就觉得不常用.解决问题就ok了.注意的是:他们按照流体的方式读取.而不是刻意反复 ...
- 用JS,求斐波那契数列第n项的值
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 01-封装函数求斐波那契数列第n项
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- C#求斐波那契数列第30项的值(递归和非递归)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Python - 求斐波那契数列前N项之和
n = int(input("Input N: ")) a = 0 b = 1 sum = 0 for i in range(n): sum += a a, b = b, a + ...
- JS求斐波那契数列的N项
第一种求法: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
- 【poj3070】矩阵乘法求斐波那契数列
[题目描述] 我们知道斐波那契数列0 1 1 2 3 5 8 13…… 数列中的第i位为第i-1位和第i-2位的和(规定第0位为0,第一位为1). 求斐波那契数列中的第n位mod 10000的值. [ ...
- C# 求斐波那契数列的前10个数字 :1 1 2 3 5 8 13 21 34 55
//C# 求斐波那契数列的前10个数字 :1 1 2 3 5 8 13 21 34 55 using System; using System.Collections.Generic; using S ...
- golang 闭包求斐波那契数列
题目是Go指南中的闭包求斐波那契数列 package main import "fmt" // 返回一个"返回int的函数" func fibonacci() ...
随机推荐
- sql的一些知识
查询 查询表中的所有列(所有信息) SELECT * FROM userinfo 查询某一列(指定) select name from userinfo 查询某一列(指定,去重) SELECT DIS ...
- Unity开发规范(个人习惯,仅供參考)
近期整理了一下unity里的文件夹使用和脚本上的一些规范,这个看个人习惯,仅供參考 1.unity中的Project文件夹 总体文件夹大致例如以下: 按资源种类分目录. ...
- C 标准库 - <signal.h>
C 标准库 - <signal.h> 简介 signal.h 头文件定义了一个变量类型 sig_atomic_t.两个函数调用和一些宏来处理程序执行期间报告的不同信号. 库变量 下面是头文 ...
- Web文件的ContentType类型大全
".*"="application/octet-stream"".001"="application/x-001"&qu ...
- CUDA vs GPGPU
http://www.kuqin.com/hardware/20080830/15726.html 一 在硬件和软件之间选择 “计算机软件和硬件的逻辑等价性”是计算机组成原理中一个非常重要的理 ...
- python--多种程序分析(2)
1.文件操作有哪些模式?请简述各模式的作用 r模式只读 w模式只写 a模式只添加 r+可读可写 w+可写可读 a+可读可添加 rb 二进制只读 wb 二进制只写 ab 二进制添加 ...
- IMDB-WIKI - 具有年龄和性别标签的500k +脸部图像
Rasmus Rothe, Radu Timofte, Luc Van Gool DEX:从单一形象深刻地看待年龄 观看 人物研讨会国际计算机视觉大会(ICCV),2015*获胜LAP面对年龄估计的挑 ...
- CSS入门学习
一.What? CSS的全称是CascadingStyle Sheet,汉语意思是"级联样式表".通常又称为"风格样式表(StyleSheet)".它是用来进行 ...
- echart地图下钻
需求:展示中国地图,鼠标点击显示对应的省份 在echart的github上下载需要的 地图文件China.js,各个省份的json文件 遇到的问题:直接在浏览器打开报错,跨域问题,用webstrom打 ...
- 2018.11.23-day26 面向对象(终结)
1.私有成员不能被继承2.装饰器方法--(类方法&静态方法)3.装饰器--property方法4.反射