hdu1005 矩阵快速幂
2024-09-05 10:43:52
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
#define ll long long
int m[][],a,b,n,t[][];
int temp[][];
void power(int x)
{
if(x==)
{
m[][]=m[][]=;
m[][]=m[][]=;
return ;
}
if(x==)
{
m[][]=a%;
m[][]=b%;
m[][]=;
m[][]=;
return ;
}
power(x>>);
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
temp[i][j]=;
for(int k=;k<=;k++)
{
temp[i][j]=(temp[i][j]+(m[i][k]*m[k][j])%)%;
}
}
}
if(x&)
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
m[i][j]=;
for(int k=;k<=;k++)
{
m[i][j]=(m[i][j]+(temp[i][k]*t[k][j])%)%;
}
}
}
}
else
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
m[i][j]=temp[i][j];
}
}
} for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
m[i][j]=m[i][j]%;
}
}
return ;
} int main()
{ while(scanf("%d%d%d",&a,&b,&n),a||b||n)
{ t[][]=a%;
t[][]=b%;
t[][]=;
t[][]=;
if(n==||n==)
{
printf("1\n");
continue;
}
else
{
power(n-);
printf("%d\n",(m[][]+m[][])%);
}
}
return ;
}
鸣谢https://blog.csdn.net/cambridgeacm/article/details/7703809
最新文章
- 1Z0-053 争议题目解析505
- 学习 Linux,101: Linux 命令行
- android Gui系统之WMS(2)----窗口的添加
- 关于事件触发的一个小tips
- ios 开发 收起键盘的小技巧
- Codeforces Round #369 (Div. 2) C. Coloring Trees(dp)
- JavaScript中style.left与offsetLeft的区别
- centos虚拟机NAT静态IP设置
- 搭建Android环境
- VIJOS 1052贾老二算算术 (高斯消元)
- python K-means工具包初解
- XCode 出现 is missing from working copy文件一直红色情况解决方法
- 读《Linux Shell脚本攻略》(第2版) 总结
- 国内各大支付平台的API地址
- SQLServer之触发器简介
- percona mysql server5.7基于gtid的主从复制
- Android studio 中,遇到报错:ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1<;6.0.1)的解决方法
- 文件上传以及JS链式结构
- DataFrame重命名单个column
- Asp.NetCore初步探究
热门文章
- 标准 I/O 和管道
- vue 路由过渡动效
- maven导入sqlserver驱动jar包依赖包到本地仓库
- Python学习零基础<入门必学>
- .NET CORE(C#) WPF 抽屉式菜单
- TP6文档-邓士鹏
- [SDOI2018]反回文串
- 有关使用phpstudy搭建sqli-lab环境搭建时发生Uncaught Error: Call to undefined function mysql_connect()错误
- Function and Function
- JAVA控制流程