是一道数论方面的题,融合了矩阵二分幂和多项式定理以及斐波那契数列的一道题。先用公式可以推出来,之后用矩阵二分幂就可以了。

关于矩阵二分幂,实际上就是矩阵的乘法,由于矩阵满足结合律,故可以用平方来计算,就达到了log(n)的复杂度,由于n可能为奇数,可能为偶数,所以当n为奇数时,还需要乘以初始矩阵。

ac代码:

#include <iostream>
#include <cmath>
#include <stdio.h>
using namespace std;
int m;
int matrix[2][2];//存储结果的矩阵
void cheng(int n){int x,y,z,w;//矩阵乘法运算x=((matrix[0][0]%m)*(matrix[0][0]%m))%m+((matrix[0][1]%m)*(matrix[1][0]%m))%m;y=((matrix[0][0]%m)*(matrix[0][1]%m))+((matrix[0][1]%m)*(matrix[1][1]%m));z=((matrix[1][0]%m)*(matrix[0][0]%m))+((matrix[1][1]%m)*(matrix[1][0]%m));w=((matrix[1][0]%m)*(matrix[0][1]%m))+((matrix[1][1]%m)*(matrix[1][1]%m));matrix[0][0]=x;matrix[0][1]=y;matrix[1][0]=z;matrix[1][1]=w;if(n%2){//乘初始矩阵x=(matrix[0][0]%m+matrix[0][1]%m)%m;y=matrix[0][0]%m;z=(matrix[1][0]%m+matrix[1][1]%m)%m;w=matrix[1][0]%m;matrix[0][0]=x;matrix[0][1]=y;matrix[1][0]=z;matrix[1][1]=w;}//取余运算matrix[0][0]%=m;matrix[0][1]%=m;matrix[1][0]%=m;matrix[1][1]%=m;
}
void dfs(int n){if(n==0){matrix[0][1]=0;return;}else if(n==1){matrix[0][1]=1;return;}dfs(n/2);if(n%2){//根据n的奇偶性判断是否需要乘初始矩阵cheng(1);}elsecheng(2);
}
int main(){//freopen("1.txt","r",stdin);int ncase;//数据组数scanf("%d",&ncase);while(ncase--){int n;scanf("%d%d",&n,&m);matrix[0][0]=1;matrix[0][1]=1;matrix[1][0]=1;matrix[1][1]=0;n=n*2;dfs(n);//求结果printf("%d\n",matrix[0][1]%m);}return 0;
}

转载于:https://www.cnblogs.com/javaspring/archive/2012/02/15/2656408.html

杭电2855 Fibonacci Check-up相关推荐

  1. 杭电 1272 poj 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

  2. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  3. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  4. 杭电 2544 最短路(bellman详解)

    首先介绍一下bellman算法: Bellman-ford算法是求含负权图的单源最短路径算法,效率很低,但代码很容易写.即进行持续地松弛(原文是这么写的,为什么要叫松弛,争议很大),每次松弛把每条边都 ...

  5. 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)

    杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 传送门 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 矩阵快速幂模板 Count Problem Descript ...

  6. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  7. 【杭电数电实验】verilog入门指北

    verilog入门指北 前言 指北内容 面向人群 基础实验 1-15 代码参考 正文 ISE 的安装 实验的基本操作流程 可能出现的问题 创建工程闪退 希望删除某一文件,实际上并没有删除 如何编写测试 ...

  8. 杭电oj11页 (c++) 31-40

    杭电oj11页 (c++) 31-40 31.2031 32.2032 33.2033 34.2034 35.2035 36.2036 37.2037 39.2039 40.2040 31.2031 ...

  9. hdoj杭电问题分类

    杭电上的题虽然多,但是一直苦于找不到问题分类,网页都是英文的,所以平时做题也没怎么看,今天仔细一看,问题分类竟然就在主页....做了那么久的题居然没发现,表示已经狗带..不要笑,不知道有没有像我一样傻 ...

最新文章

  1. Python中str.replace()的使用方法
  2. 每日一皮:这年头没点绝活连洗车都不行...
  3. PAT甲级1063 Set Similarity:[C++题解]哈希表、去重
  4. 跨时钟域电路设计——结绳法
  5. 拖动滑块拼图背景图没显示_计划B? 那是计划N…没什么。 拼图于2015年问世
  6. OPC DA通讯 KEP6.4 DCOM 配置脚本
  7. 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
  8. 博客园首页新随笔联系管理订阅订阅随笔- 610 文章- 0 评论- 83 阅读- 144万 Calendar时间获取天,周,月,季度,年度时间段
  9. 使用struts2中默认的拦截器以及自定义拦截器
  10. 阿里天池用Pandas揭秘美国选民的总统喜好附加题
  11. 触发C#Button的双击事件
  12. BDTC2016: 中航信 昆仑数据 兮易控股 宝信议题公布
  13. java服务器返回中文乱码:???
  14. 分析google关键词de工具
  15. 免费在excel密码破解--超好用
  16. 哪款蓝牙耳机耳朵不疼?久戴不疼的骨传导耳机
  17. 中国篆刻艺术孙溟㠭作品《无有中无尽藏》
  18. 在没有安装VC软件的电脑上也可以执行的exe文件
  19. hadoop集群搭建与使用
  20. CDN: trunk URL couldn't be downloaded

热门文章

  1. P3605 [USACO17JAN]Promotion Counting晋升者计数
  2. mysql 和 sqlserver中备份一张表的区别
  3. 明星居然来我们宜昌保利时代拍戏——电影《被光抓走的人》
  4. BZOJ 2820 YY的GCD 莫比乌斯反演
  5. HDU 1853 MCMF
  6. iOS系统原生二维码条形码扫描
  7. 经典算法题每日演练——第三题 猴子吃桃
  8. oracle入门学习(3) 所用的学习环境介绍与设置
  9. 3月28日云栖精选夜读:小程序,会是下一个创业风口吗?
  10. STM32在定时器中控制步进电机