题目:http://poj.org/problem?id=3070

用矩阵快速幂加速递推。

代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int n,p=;
  6. struct Matrix{
  7. int a[][];
  8. Matrix operator * (const Matrix &y) const
  9. {
  10. Matrix x;
  11. memset(x.a,,sizeof x.a);
  12. for(int i=;i<=;i++)
  13. for(int k=;k<=;k++)
  14. for(int j=;j<=;j++)
  15. x.a[i][j]+=y.a[i][k]*a[k][j];
  16. return x;
  17. }
  18. }m,ans;
  19. void mod()
  20. {
  21. m.a[][]%=p;m.a[][]%=p;//
  22. m.a[][]%=p;m.a[][]%=p;
  23. ans.a[][]%=p;ans.a[][]%=p;
  24. }
  25. int main()
  26. {
  27. while(scanf("%d",&n)==)
  28. {
  29. if(n==-)return ;
  30. memset(m.a,,sizeof m.a);
  31. memset(ans.a,,sizeof ans.a);
  32. m.a[][]=;m.a[][]=;
  33. m.a[][]=;m.a[][]=;
  34. ans.a[][]=;ans.a[][]=;
  35. if(!n){printf("0\n");continue;}
  36. if(n==){printf("1\n");continue;}
  37. if(n==){printf("1\n");continue;}
  38. n--;//!
  39. while(n)
  40. {
  41. if(n&)ans=ans*m;
  42. m=m*m;
  43. mod();
  44. n=(n>>);
  45. }
  46. printf("%d\n",ans.a[][]%p);
  47. }
  48. return ;
  49. }

poj3070 求斐波那契数列第n项 ——矩阵快速幂的更多相关文章

  1. 黑马入学基础测试(三)求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

    .获得用户的输入 计算      3打印就行了.   这里用到了java.util.Scanner   具体API  我就觉得不常用.解决问题就ok了.注意的是:他们按照流体的方式读取.而不是刻意反复 ...

  2. 用JS,求斐波那契数列第n项的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. 01-封装函数求斐波那契数列第n项

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. Python - 求斐波那契数列前N项之和

    n = int(input("Input N: ")) a = 0 b = 1 sum = 0 for i in range(n): sum += a a, b = b, a + ...

  6. JS求斐波那契数列的N项

    第一种求法: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  7. 【poj3070】矩阵乘法求斐波那契数列

    [题目描述] 我们知道斐波那契数列0 1 1 2 3 5 8 13…… 数列中的第i位为第i-1位和第i-2位的和(规定第0位为0,第一位为1). 求斐波那契数列中的第n位mod 10000的值. [ ...

  8. 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 ...

  9. golang 闭包求斐波那契数列

    题目是Go指南中的闭包求斐波那契数列 package main import "fmt" // 返回一个"返回int的函数" func fibonacci() ...

随机推荐

  1. sql的一些知识

    查询 查询表中的所有列(所有信息) SELECT * FROM userinfo 查询某一列(指定) select name from userinfo 查询某一列(指定,去重) SELECT DIS ...

  2. Unity开发规范(个人习惯,仅供參考)

    近期整理了一下unity里的文件夹使用和脚本上的一些规范,这个看个人习惯,仅供參考 1.unity中的Project文件夹      总体文件夹大致例如以下:            按资源种类分目录. ...

  3. C 标准库 - <signal.h>

    C 标准库 - <signal.h> 简介 signal.h 头文件定义了一个变量类型 sig_atomic_t.两个函数调用和一些宏来处理程序执行期间报告的不同信号. 库变量 下面是头文 ...

  4. Web文件的ContentType类型大全

    ".*"="application/octet-stream"".001"="application/x-001"&qu ...

  5. CUDA vs GPGPU

    http://www.kuqin.com/hardware/20080830/15726.html 一 在硬件和软件之间选择     “计算机软件和硬件的逻辑等价性”是计算机组成原理中一个非常重要的理 ...

  6. python--多种程序分析(2)

    1.文件操作有哪些模式?请简述各模式的作用 r模式只读  w模式只写 a模式只添加   r+可读可写  w+可写可读  a+可读可添加   rb  二进制只读  wb 二进制只写   ab 二进制添加 ...

  7. IMDB-WIKI - 具有年龄和性别标签的500k +脸部图像

    Rasmus Rothe, Radu Timofte, Luc Van Gool DEX:从单一形象深刻地看待年龄 观看 人物研讨会国际计算机视觉大会(ICCV),2015*获胜LAP面对年龄估计的挑 ...

  8. CSS入门学习

    一.What? CSS的全称是CascadingStyle Sheet,汉语意思是"级联样式表".通常又称为"风格样式表(StyleSheet)".它是用来进行 ...

  9. echart地图下钻

    需求:展示中国地图,鼠标点击显示对应的省份 在echart的github上下载需要的 地图文件China.js,各个省份的json文件 遇到的问题:直接在浏览器打开报错,跨域问题,用webstrom打 ...

  10. 2018.11.23-day26 面向对象(终结)

    1.私有成员不能被继承2.装饰器方法--(类方法&静态方法)3.装饰器--property方法4.反射