HDU - 4990 Reading comprehension (矩阵快速幂)
来源:互联网 发布:淘宝车模店怎么开 编辑:程序博客网 时间:2024/04/29 04:59
两种快速幂的方法,递推式如下:
1、分奇偶数:
奇数F(x)=4*F(x-1)+1;
偶数F(x)=4*F(x-1)+2;
2、F(x)=F(x-1)+2*F(x-2)+1
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <algorithm>#include <fstream>#include <set>#include <map>#include <queue>#include <stack>#include <list>#include <vector>#include <cmath>#include <iomanip>typedef long long LL;typedef unsigned long long LLU;const double PI=acos(-1.0);using namespace std;const int N=4;LL MOD;int n;struct Matrix{ LL m[N][N];} init;Matrix Mult(Matrix m1,Matrix m2){ Matrix ans; for(int i=0; i<2; i++) for(int j=0; j<2; j++) { ans.m[i][j]=0; for(int k=0; k<2; k++) ans.m[i][j]=(ans.m[i][j]+m1.m[i][k]*m2.m[k][j])%MOD; } return ans;}Matrix Pow(Matrix m1,int b){ Matrix ans; for(int i=0; i<2; i++) for(int j=0; j<2; j++) ans.m[i][j]=(i==j); while(b) { if(b&1) ans=Mult(ans,m1); m1=Mult(m1,m1); b>>=1; } return ans;}int main(){ memset(init.m, 0, sizeof(init.m)); init.m[0][0]=4; init.m[0][1]=1; init.m[1][0]=0; init.m[1][1]=1; while(cin>>n>>MOD) { Matrix ans=Pow(init, (n+1)/2); Matrix unit; unit.m[0][0]=unit.m[0][1]=unit.m[1][1]=0; if(n&1) unit.m[1][0]=1; else unit.m[1][0]=2; ans=Mult(ans, unit); cout<<ans.m[0][0]<<endl; } return 0;}
0 0
- hdu 4990 Reading comprehension (矩阵快速幂)
- hdu 4990 Reading comprehension(矩阵快速幂)
- [矩阵快速幂] hdu 4990 Reading comprehension
- HDU - 4990 Reading comprehension (矩阵快速幂)
- HDU 4990 Reading comprehension (矩阵快速幂)
- hdu 4990 Reading comprehension 矩阵快速幂
- hdu-4990 Reading comprehension(快速幂+矩阵)
- HDU 4990 Reading comprehension(找规律+矩阵快速幂)
- HDU 4990 Reading comprehension (找规律+矩阵快速幂)
- HDU 4990 Reading comprehension(矩阵快速幂优化)
- HDU 4990 Reading comprehension(找规律)(矩阵快速幂)
- HDU 4990 Reading comprehension(矩阵快速幂)
- HDU 4990 Reading comprehension(找规律+矩阵快速幂)
- 【矩阵快速幂】 HDOJ 4990 Reading comprehension
- HDOJ 4990 Reading comprehension(矩阵快速幂)
- HDU 4990 Reading comprehension(递推+快速幂 或 矩阵快速幂)
- hdu 4990 Reading comprehension 矩阵快速幂or数论 bestcoder round 8b
- 【矩阵快速幂-找规律】HDOJ Reading comprehension 4990
- ios笔试题
- #include <fstream> 应用
- IOS7的状态栏和导航栏
- RTMP协议分析 一、RTMP包头
- memcache配置说明
- HDU - 4990 Reading comprehension (矩阵快速幂)
- 什么是本体论?
- HTTP协议详解
- 叉积、线段相交判断、凸包
- 远程centos修改yum源
- Android Fragment详解(一):概述
- iOS之nil, Nil, NULL,null和NSNull的区别
- Protocbuf使用和安装
- 6.2.2 C# 中处理元组的方法