P2044 [NOI2012]随机数生成器
正常的矩乘题。
但是,计算过程中会爆long long。
所以,我们要用快速(龟速)乘来解决。
快速乘,也就是把快速幂稍作修改。乘法被分成若干个加法,以时间为代价解决精度问题。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll; ll n,m,_a,c,g;
inline ll fastmul(ll x,ll y){ //快速乘
ll ans=;
for(;y;y>>=){
if(y&) ans=(ans+x)%m;
x=(x<<)%m;
}
return ans%m;
}
struct matrix{
ll a[][];
matrix(){memset(a,,sizeof(a));}
matrix operator * (matrix &tmp){
matrix c;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
c.a[i][j]=(c.a[i][j]+fastmul(a[i][k],tmp.a[k][j]))%m;
return c;
}
matrix ksm(matrix x,ll y){
matrix ans;
ans.a[][]=ans.a[][]=;
for(;y;y>>=){
if(y&) ans=ans*x;
x=x*x;
}
return ans;
}
}p,st; int main()
{
scanf("%lld%lld%lld%lld%lld%lld",&m,&_a,&c,&st.a[][],&n,&g);
p.a[][]=_a; p.a[][]=p.a[][]=; //构造初始矩阵
st.a[][]=c;
p=p.ksm(p,n);
st=st*p;
printf("%lld",st.a[][]%g);
return ;
}
P2044 [NOI2012]随机数生成器的更多相关文章
- [洛谷P2044][NOI2012]随机数生成器
题目大意:给你$m,a,c,X_0,n,g$,求$X_{n+1}=(a\cdot X_n+c) \bmod{m}$,最后输出对$g$取模 题解:矩阵快速幂+龟速乘,这里用了$long\;double$ ...
- 洛谷 P2044 [NOI2012]随机数生成器
题意简述 读入X[0], m, a, c, n和g $ X[n+1]=(a*X[n]+c)\mod m $ 求X数列的第n项对g取余的值. 题解思路 矩阵加速 设\[ F=\begin{bmatrix ...
- 矩阵(快速幂):COGS 963. [NOI2012] 随机数生成器
963. [NOI2012] 随机数生成器 ★★ 输入文件:randoma.in 输出文件:randoma.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 栋 ...
- BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )
矩阵快速幂...+快速乘就OK了 ----------------------------------------------------------------------------------- ...
- Bzoj 2875: [Noi2012]随机数生成器(矩阵乘法)
2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2052 Solved: 1118 Description ...
- [NOI2012]随机数生成器【矩阵快速幂】
NOI2012 随机数生成器 题目描述 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法 ...
- BZOJ2875 & 洛谷2044:[NOI2012]随机数生成器——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2875 https://www.luogu.org/problemnew/show/P2044 栋栋 ...
- LG2044 [NOI2012]随机数生成器
题意 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c ...
- BZOJ2875 [Noi2012]随机数生成器 【矩阵乘法 + 快速乘】
题目 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础.栋栋准备使用线性同余法(Linear Congruential Me thod)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a, ...
随机推荐
- iOS UI布局-VFL语言
什么是VFL语言 VFL(Visual Format Language),“可视化格式语言”. VFL是苹果公司为了简化autolayout的编码而推出的抽象语言. 语法说明 H:[cancelBut ...
- Cocos Creator iPhoneX适配的解决办法
研究了5个小时的iPhoneX适配. 从catalog,storyboard,safearea等一系列文章中发现.如果我们想完全撑满全屏.那直接建一个storyboard就好了.但撑满全屏后,流海就是 ...
- webpack使用四
鼎鼎大名的Loaders登场了! Loaders是webpack提供的最激动人心的功能之一了.通过使用不同的loader,webpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理,比如说分 ...
- sqli-labs(十八)
第五十五关:和上一关类似,只是拼凑的方法不一样,所以需要先判断后台是怎么拼凑的 分别输入id=1'--+ id=1"--+ id=') --+ ...
- RSA加解密 私钥加密公钥解密 私加公解 && C++ 调用openssl库 的代码实例
前提:秘钥长度=1024 ============================================== 对一片(117字节)明文加密 私加 ===================== ...
- python入门第二篇
整体注释:ctrl+? 1.运算符 + - * / //(取商) **(幂) %(求余) 判断某个东西是否在某个东西里面包含: in not in 不等于: <& ...
- Spring MVC / Boot
https://stackoverflow.com/questions/5690228/spring-mvc-how-to-return-image-in-responsebody http://hw ...
- django admim后台不转义提交的html
autoescape¶ Controls the current auto-escaping behavior. This tag takes either on or off as an argum ...
- hdu3879 最大权闭合回路
题意: 有n个基站可以建立,然后m个团体会使用这些基站进行工作,地i个团体会适应Ai Bi 这两个基站, 如果建成收益Ci, 第j个基站花费Pj,求如何建立使得收益最大, 将每个团体看以一个点,然后 ...
- 准备mysql-connector-java
下载mysql-connector-java:https://mvnrepository.com/artifact/mysql/mysql-connector-java 导入mysql-connect ...