题目链接:https://vijos.org/p/1725

    http://www.lydsy.com/JudgeOnline/problem.php?id=2875

这题是前几年的noi的题,时间比较久远了所以就不是那么的难了

这是一个非常裸的矩阵乘法,一般矩阵乘法就是矩阵+快速幂

只是这道题在矩阵乘法的时候单纯的乘法会溢出,所以还要用到快速乘法

网上也有说用long double黑科技的,虽然我不是很懂那个东东

构造矩阵

单位矩阵a,c

0,1

答案矩阵   Xi-1

1

我的这个矩阵构造可能和一般的不同,主要是我受斐波拉契的毒害太深了QAQ

这题我一开始只是用的int,只过了一半,longlong后过了17组,最后三组加上快速乘优化才成功通过

然后如果是在vijos提交要注意一点就是在vijos上输出longlong型要用I64d来输出

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<queue>
#define ll long long
using namespace std; ll n,m,a,c,g,x0;
ll ans[][],b[][]; void read(ll & xx){
xx=;ll ff=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){xx=xx*+ch-'';ch=getchar();}
xx*=ff;
} ll sum(ll x,ll y){
ll cnt=;
while(y){
if(y&){
cnt=(cnt+x)%m;
}y>>=;x=(x+x)%m;
}return cnt;
} void add(){
ll z[][];memset(z,,sizeof(z));
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
z[i][j]=(z[i][j]%m+sum(b[k][j],b[i][k])%m)%m;
}
}
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
b[i][j]=z[i][j]%m;
} void mul(ll y){
while(y){
if(y&){
ll z[][];z[][]=z[][]=;
for(int i=;i<=;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
z[i][j]=(z[i][j]%m+sum(ans[k][j],b[i][k])%m)%m;
}
}
}
ans[][]=z[][]%m;
}
y>>=;
add();
}
} int main(){
read(m),read(a),read(c),read(x0),read(n),read(g);
ans[][]=x0%m;ans[][]=;
b[][]=a%m;b[][]=c%m;b[][]=;
mul(n);
//printf("%lld",ans[1][1]%g);
cout<<ans[][]%g;
}

【总结】

活用快速幂的模板,毕竟这东西真的很神奇

最新文章

  1. Linux监控工具介绍系列&mdash;&mdash;free
  2. 用SignalR实现实时查看WebAPI请求日志
  3. K-Means 聚类算法原理分析与代码实现
  4. A/B测试
  5. [转】HTTP请求流程(二)----Telnet模拟HTTP请求
  6. jquery保存用户名和密码到cookie里面
  7. 1306.Sequence Median(堆排序)
  8. POJ2586 Y2K Accounting Bug(贪心)
  9. PHP获取当前类名、函数名、方法名
  10. 关于jQuery中的trigger和triggerHandler方法的使用
  11. 前端笔记之移动端&amp;响应式(中)视口&amp;百分比布局&amp;弹性盒模型&amp;rem&amp;fillpage
  12. flask轻量级框架入门
  13. 用Vue2仿京东省市区三级联动效果
  14. 基于IPv6的数据包抓包分析(GNS3)
  15. Hadoop问题:Input path does not exist: hdfs://Master:9000/user/hadoop/input
  16. 1. eclipse异常问题解决办法
  17. SQL server约束
  18. Citrix Merchandising Server 配置
  19. ML—机器学习常用包(持续更新….)
  20. 手机端可以和PC端同时在线-java QRCode 实现网站扫码登录(即支持同帐号多设备同时登录)

热门文章

  1. 重置gitlab管理员密码
  2. The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path index.jsp页面出现错误的解决方法
  3. 原型模式故事链(3)--JS的数据类型、以及区别、区分、转化
  4. 峰哥说技术:08-Spring Boot整合FreeMarker视图
  5. 前端---css3优化
  6. Python中使用os模块执行远程命令
  7. juery 弹出框
  8. this.current = params.page || 1 (前提是params对象一定要存在)
  9. Mybatis---在控制台打印sql语句
  10. postman集合测试执行