poj3070 单位矩阵(转移矩阵构造)+矩阵快速幂
太妙了。。通过矩阵乘法来加速递推
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define mod 10000
int n;
void mul(int f[],int a[][]){//一维数组和矩阵相乘
int c[]={};
for(int i=;i<;i++)
for(int j=;j<;j++)
c[j]=(c[j]+(long long)f[i]*a[i][j])%mod;
memcpy(f,c,sizeof c);
}
void mulself(int a[][]){//矩阵自乘
int c[][]={};
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
c[i][j]=(c[i][j]+(long long)a[i][k]*a[k][j])%mod;
memcpy(a,c,sizeof c);
} int main(){
while(cin>>n && n>=){
int f[]={,},a[][]={{,},{,}};
while(n){
if(n%)mul(f,a);
mulself(a);
n>>=;
}
cout<<f[]<<endl;
}
}
/*
1 1 2 3 5 8 13 21 34
*/
poj3070 单位矩阵(转移矩阵构造)+矩阵快速幂的更多相关文章
- HDU 5667 构造矩阵快速幂
HDU 5667 构造矩阵快速幂 题目描述 解析 我们根据递推公式 设 则可得到Q的指数关系式 求Q构造矩阵 同时有公式 其中φ为欧拉函数,且当p为质数时有 代码 #include <cstdi ...
- hdu4686 Arc of Dream ——构造矩阵+快速幂
link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = ...
- hdu 4565 So Easy! (共轭构造+矩阵快速幂)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 题目大意: 给出a,b,n,m,求出的值, 解题思路: 因为题目中出现了开根号,和向上取整后求 ...
- HDU 5607 graph 矩阵快速幂 + 快速幂
这道题得到了学长的助攻,其实就是一个马尔科夫链,算出一步转移矩阵进行矩阵快速幂就行了,无奈手残 这是我第一回写矩阵快速幂,写的各种毛病,等到调完了已经8点44了,交了一发,返回PE,(发现是少了换行) ...
- HUST 1569(Burnside定理+容斥+数位dp+矩阵快速幂)
传送门:Gift 题意:由n(n<=1e9)个珍珠构成的项链,珍珠包含幸运数字(有且仅由4或7组成),取区间[L,R]内的数字,相邻的数字不能相同,且旋转得到的相同的数列为一种,为最终能构成多少 ...
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...
- LOJ2325. 「清华集训 2017」小 Y 和恐怖的奴隶主【矩阵快速幂优化DP】【倍增优化】
LINK 思路 首先是考虑怎么设计dp的状态 发现奴隶主的顺序没有影响,只有生命和个数有影响,所以就可以把每个生命值的奴隶主有多少压缩成状态就可以了 然后发现无论是什么时候一个状态到另一个状态的转移都 ...
- D. Magic Gems(矩阵快速幂 || 无敌杜教)
https://codeforces.com/contest/1117/problem/D 题解:有一些魔法宝石,魔法宝石可以分成m个普通宝石,每个宝石(包括魔法宝石)占用1个空间,让你求占用n个空间 ...
- 矩阵快速幂——POJ3070
矩阵快速幂和普通的快速幂差不多,只不过写起来比较麻烦一点,需要重载*运算符. 模板: struct mat { int m[maxn][maxn]; }unit; mat operator * (ma ...
- POJ3070 斐波那契数列 矩阵快速幂
题目链接:http://poj.org/problem?id=3070 题意就是让你求斐波那契数列,不过n非常大,只能用logn的矩阵快速幂来做了 刚学完矩阵快速幂刷的水题,POJ不能用万能头文件是真 ...
随机推荐
- apk逆向实例 TopCtf
TopCtf 题目链接: https://pan.baidu.com/s/1jINx7Fo (在里面找相应的名字就行) 背景故事: 我是小白一枚,自学一些基础知识... 从朋友那得到的题,朋友说巨 ...
- JAVA知识笔记
1.对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的.更详细介绍参考http://blog.csdn.net/libing13820393394/articl ...
- dubbo初步认识
dubbo中文网站:http://dubbo.apache.org/zh-cn/ dubbo英文网站:http://dubbo.apache.org/en-us/ 1.Apache Dubbo是一款高 ...
- 使用WireMock快速伪造RESTful服务
⒈下载WireMock独立运行程序 http://wiremock.org/docs/running-standalone/ ⒉运行 java -jar wiremock-standalone-2.2 ...
- Linux下的压缩和解压缩命令gzip/gunzip
作者:邓聪聪 Linux下的压缩和解压缩命令——gzip/gunzip yum -y install zip gzip (--安装压缩工具) gzip命令 gzip命令用来压缩文件.gzip是个使用广 ...
- HTTP协议05-Web服务器
1)用单台虚拟主机实现多个域名 HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点.比如,提供Web托管服务的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的 ...
- python3+requests库框架设计06-测试脚本
在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件 把配置文件改成这样 url:http ...
- Redis(转)
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...
- weblogic和was的巡检报告模板
weblogic巡检报告模板 https://max.book118.com/html/2017/0710/121553357.shtm 用jrockit How to tell Our WebLo ...
- vue.js如何更改默认端口号8080为指定端口
执行npm run dev实际是在调用根目录下的package.json 打开package.json后可发现有这样一段代码 由此可知,我们应该查看build目录下的dev-server.js文件 在 ...