[题解]luogu_P5059(矩乘
时间:2019-09-27
本文章向大家介绍[题解]luogu_P5059(矩乘,主要包括[题解]luogu_P5059(矩乘使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这题竟然和5004 m=1时几乎一样.....
先不考虑至少放两个,方案数和那题一样,再减掉不放和放一个的,共n+1种(把棋子放在格子中n为格子数
矩乘斐波那契
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e18+9; ll n,mod; ll mul(ll a,ll b){ ll ans=0; while(b){ if(b&1)ans=(ans+a)%mod; a=(a<<1)%mod;b>>=1; } return ans; } struct node{ ll a[5][5]; node(){memset(a,0,sizeof(a));} node operator *(const node&t)const{ node ans; for(int i=1;i<=2;i++) for(int j=1;j<=2;j++) for(int k=1;k<=2;k++) (ans.a[i][j]+=mul(a[i][k],t.a[k][j]))%=mod; return ans; } }ans,p; node operator ^(node x,ll b){ node ans; ans.a[1][1]=1;ans.a[2][2]=1; while(b){ if(b&1)ans=ans*x; x=x*x; b>>=1; } return ans; } ll qpow(ll a,ll b){ ll ans=1; while(b){ if(b&1)ans=mul(ans,a); a=mul(a,a); b>>=1; } return ans; } int main(){ scanf("%d%d",&n,&mod);n++; if(n<=3){ if(n==1)cout<<0; if(n==2)cout<<0; if(n==3)cout<<1; return 0; } ans.a[1][1]=1;ans.a[1][2]=1; p.a[1][1]=1;p.a[1][2]=1;p.a[2][1]=1; p=p^(n);ans=ans*p; ll aa=((ans.a[1][1]-n-1)%mod+mod)%mod; aa=qpow(aa,n); printf("%lld",aa%mod); }
原文地址:https://www.cnblogs.com/superminivan/p/11598985.html
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)
- 在mono 3.0 下运行ASP.NET 4网站的主意事项
- 《干货系列》SQL语句-知无不言言无不尽
- OutOfMemoryError异常系列之方法区溢出和运行时常量溢出池溢出
- 代码转换工具 Code Converter 2013
- OutOfMemoryError异常系列之Java堆溢出
- android ndk之hello world
- ScheduledExecutorService和timer的异同
- 【精心解读】关于Jupyter Notebook的28个技巧
- Web项目接口自动化测试框架搭建
- 一文读懂Hadoop、HBase、Hive、Spark分布式系统架构
- 《Spring敲门砖之基础教程第一季》 第二章(1) Spring框架之IOC首例-HelloWorld
- Java9中的GC调优基础
- javascript深入理解js闭包
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 规则引擎 - drools 使用讲解(简单版) - Java
- Python奇技淫巧 - 持续更新中....
- 150+行Python代码实现带界面的数独游戏
- Python实现十大经典排序算法
- 140行Python代码实现Flippy Bird
- 200行Python代码实现贪吃蛇
- 简单说维特比算法 - python实现
- Android绘图及Bitmap几个知识点整理
- Spark Pipeline官方文档
- Python-时间及日期-07-获取本周或上周几具体日期
- Spark Job-Stage-Task实例理解
- 想查看微信好友撤回的消息?Python帮你搞定
- MySQL 案例:同步中断与SQL线程类型转换
- Android端Charles抓包
- Spring boot 启动提示数据源错误