题目链接: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;
}

【总结】

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

[vijos1725&bzoj2875]随机数生成器<矩阵乘法&快速幂&快速乘>的更多相关文章

  1. BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘

    题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...

  2. bzoj2875随机数生成器——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵快速幂,把x和c分开求,最后加上即可: 为防止爆long long,要用快速乘. ...

  3. Bzoj 2875: [Noi2012]随机数生成器(矩阵乘法)

    2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2052 Solved: 1118 Description ...

  4. [NOI2012]随机数生成器 矩阵乘法

    Code: #include<cstdio> #include<algorithm> #include<iostream> #include<cstring& ...

  5. BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )

    矩阵快速幂...+快速乘就OK了 ----------------------------------------------------------------------------------- ...

  6. 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】

    目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...

  7. HDU 4549 矩阵快速幂+快速幂+欧拉函数

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  8. 取模性质,快速幂,快速乘,gcd和最小公倍数

    一.取模运算 取模(取余)运算法则: 1. (a+b)%p=(a%p+b%p)%p; 2.(a-b)%p=(a%p-b%p)%p; 3.(a*b)%p=(a%p * b%p)%p; 4.(a^b)%p ...

  9. [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂

    好裸的矩阵快速幂-然而我一开始居然构造不出矩阵- 平常两个的情况都是拿相邻两项放在矩阵里拿去递推的-然后我就一直构造不出来-其实把矩阵下面弄成1就好了啊orz #include<cstdio&g ...

随机推荐

  1. CF 1305E. Kuroni and the Score Distribution

    题目大意:题目给定两个数n和m(1<=n<=5000,0<=m<=1e9)要求构造一个数列A,A中元素 大于等于1,小于等于1e9且满足严格递增 满足ai+aj=ak的(i,j ...

  2. MVC01

    1.Controller 1) 添加: 在Controller目录右键进行添加,出现很多模式供选择,选择空的Controller,命名后新建.新建后Views 目录将同步生成相应名称的视图文件目录 均 ...

  3. Feign 注解翻译器 三

    一.自定义注解翻译器 (1)JAXRS 注解翻译器实例 ① 导入JAXRS所需要的jar包 <dependency> <groupId>io.github.openfeign& ...

  4. 17-Java-文件上传报错(commons-fileupload包和commons-io包不支持JDK版本:UnsupportedClassVersionError: org/apache/commons/io/IOUtils : Unsupported major.minor version 52.0)

    文件上传报错(commons-fileupload包和commons-io包不支持JDK版本) 这个bug可把我弄惨了!!!我代码是想通过写个文件上传,我写的文件上传需要用到commons-fileu ...

  5. python.五角星

    import turtle turtle.pensize(4)turtle.pencolor("black") turtle.fillcolor("red")t ...

  6. Nodejs:md5入门介绍及crypto模块的应用

    简介 MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法.摘要算法),主要用来确保消息的完整和一致性.常见的应用场景有密码保护.下载文件校验等. ...

  7. 机器学习——详解经典聚类算法Kmeans

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第12篇文章,我们一起来看下Kmeans聚类算法. 在上一篇文章当中我们讨论了KNN算法,KNN算法非常形象,通过距离公 ...

  8. vue 阻止冒泡 @click.stop=

    vue 阻止冒泡 @click.stop= vue中处理冒泡标准姿势 事件修饰符 Vue.js 为 v-on 提供了事件修饰符,修饰符是由点开头的指令后缀来表示的.这些事件修饰符主要有以下几个: st ...

  9. 基于SIP协议的性能测试——奇林软件kylinPET

    一.Sip协议简介: SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定 ...

  10. 《深入理解 Java 虚拟机》读书笔记:早期(编译期)优化

    正文 Java 语言的 3 类编译器: 前端编译器:把 java 文件 转变成 class 文件.例如:Sun 的 Javac. JIT 编译器(即时编译器):后端运行期编译器,把字节码转变成机器码. ...