hdu4565 矩阵构造+矩阵快速幂
来源:互联网 发布:淘宝上levis眼镜 编辑:程序博客网 时间:2024/05/17 11:04
第一眼看到就是矩阵快速幂,当然不能拿浮点数来快速幂了,要转化一下。
看到一些乱七八糟的推导,下面来个简单的
下面就直接快速幂就好了
// Created by Chenhongwei on 2016-03-02 Wednesday 23:48// Copyright (c) 2016 Chenhongwei. All rights reserved.#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <climits>#include <queue>#include <cmath>#include <map>#include <set>#include <stack>#include <vector>#include <sstream>#include <algorithm>#define root 1,n,1#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;const int inf=1e9;const int maxn=1e5+100;typedef long long ll;typedef unsigned long long ull;struct matrix{int x[2][2];};ll a,b,n,mod;matrix mul(matrix &A,matrix &B){matrix C;for(int i=0;i<2;i++)for(int j=0;j<2;j++){C.x[i][j]=0;for(int k=0;k<2;k++)C.x[i][j]=(C.x[i][j]+A.x[i][k]*B.x[k][j]%mod)%mod;}return C;}int main(){//ios::sync_with_stdio(false); // freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);while(scanf("%lld%lld%lld%lld",&a,&b,&n,&mod)!=EOF){matrix ans,t;for(int i=0;i<2;i++)for(int j=0;j<2;j++)ians.x[i][j]=(i==j);t.x[0][0]=a%mod,t.x[0][1]=1;t.x[1][0]=b%mod,t.x[1][1]=a%mod;while(n){if(n&1)ans=mul(ans,t);t=mul(t,t);n>>=1;}printf("%lld\n",(ans.x[0][0]*2)%mod);}return 0;}
0 0
- hdu4565 矩阵构造+矩阵快速幂
- hdu4565 矩阵快速幂
- hdu4565(矩阵快速幂)
- hdu4565之矩阵快速幂
- hdu4565 So Easy!(矩阵快速幂)
- HDU4565 So Easy!【矩阵快速幂】
- hdu4565 So Easy! 广义斐波那契+矩阵快速幂+共轭构造
- 20130707 hdu4565 So Easy! 数学头脑+矩阵快速幂
- HDU4565 So Easy! 矩阵快速幂外加数学
- HDU4565-So Easy!(共轭运用+矩阵快速幂)
- HDU4565 So Easy!(数学+矩阵快速幂)
- HDU4565-So easy-数学推导化简递推矩阵快速幂
- HDU4565---So Easy!(矩阵快速幂(精度控制))
- 构造矩阵+矩阵快速幂
- hdoj 5015 构造矩阵+矩阵快速幂
- 纪念SlingShot 矩阵快速幂 构造矩阵
- BZOJ 3240 构造矩阵+矩阵快速幂
- BZOJ 1898 构造矩阵+矩阵快速幂
- 20jquery题
- Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法
- 计算机独立本科考试
- python---通过networkx使图着色结果可视化
- day07—SQL基本查询
- hdu4565 矩阵构造+矩阵快速幂
- 顺序查找
- window下连接ubuntu mysql的问题
- 【PAT】1044. 火星数字(20)
- 数论+差分 hdu1121 Complete the Sequence
- js 函数 function
- java基础总结第一篇(JAVA简介)
- ios中navigation controller的漂移问题
- JVM学习笔记9—JIT及其相关参数