[bzoj2875][矩阵乘法]随机数生成器

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件) 本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。 阅读详情

Description

栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Me

thod)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机
数X[n]X[n+1]=(aX[n]+c)mod m其中mod m表示前面的数除以m的余数。从这个式子可以看出,这个序列的下一个数
总是由上一个数生成的。用这种方法生成的序列具有随机序列的性质,因此这种方法被广泛地使用,包括常用的C+
+和Pascal的产生随机数的库函数使用的也是这种方法。栋栋知道这样产生的序列具有良好的随机性,不过心急的 他仍然想尽快知道X[n]是多少。由于栋栋需要的随机数是0,1,…,g-1之间的,他需要将X[n]除以g取余得到他想要 的数,即X[n]
mod g,你只需要告诉栋栋他想要的数X[n] mod g是多少就可以了。

Input

6个用空格分割的整数m,a,c,X[0],n和g,其中a,c,X[0]是非负整数,m,n,g是正整数。 g<=10^8
对于所有数据,n>=1,m>=1,a>=0,c>=0,X[0]>=0,g>=1。

Output

输出一个数,即X[n] mod g

Sample Input

11 8 7 1 5 3

Sample Output

2

【样例说明】

计算得X[n]=X[5]=8,故(X[n] mod g) = (8 mod 3) = 2

题解

一眼矩乘题
转移矩阵
a1
01
初始矩阵
x0
c
然后乘个n次搞出答案来。
然后你就会发现,乘法的时候会突然地爆longlong
高精度取模???
不不不,搞个快速乘。类似快速幂一样的东西,把乘号改成加号就OK啦

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL mod;
struct matrix{LL m[4][4];matrix(){memset(m,0,sizeof(m));}}st,tmp;
LL fast_mul(LL u,LL v)
{
    LL ret=0;
    while(v)
    {
        if(v%2LL==1LL)ret=(ret+u)%mod;
        u=(u+u)%mod;v/=2;
    }
    return ret;
}
matrix mul(matrix u,matrix v,int n,int m,int p)
{
    matrix ret;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(int k=1;k<=p;k++)
                ret.m[i][k]=(ret.m[i][k]+fast_mul(u.m[i][j],v.m[j][k]))%mod;
    return ret;
}
matrix pow_mod(matrix u,LL b)
{
    matrix ans;
    for(int i=1;i<=2;i++)ans.m[i][i]=1;
    while(b)
    {
        if(b%2==1)ans=mul(ans,u,2,2,2);
        u=mul(u,u,2,2,2);b/=2;
    }
    return ans;
}
LL m,a,c,x0,n,g;
int main()
{
    scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x0,&n,&g);
    mod=m;
    st.m[1][1]=a;st.m[1][2]=st.m[2][2]=1;
    tmp.m[1][1]=x0;tmp.m[2][1]=c;
    tmp=mul(pow_mod(st,n),tmp,2,2,1);
    printf("%lld\n",tmp.m[1][1]%g);
    return 0;
}
五步教你用GPT-5画出国自然技术路线图!轻松节省80%画图时间(附AI提示词) 七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。 阅读详情

相关推荐

告别Arduino IDE!用VSCode搭建Arduino UNO R3开发环境(含代码补全配置)

本文详细指导如何用VSCode替代Arduino IDE搭建Arduino UNO R3开发环境,包含代码补全配置和高效开发技巧。通过安装必要插件、配置项目结构和优化工作流,可显著提升开发效率,特别适合复杂项目开发。文章还提供了常见问题解决方案和高级功能调优方法。

weixin_30698297的博客 479

【NOI2012】随机数生成器

Description栋栋最近迷上了随机算法,而随机数生成是随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数 m, a, c, X0,按照下面的公式生成出一系列随机数< Xn >:Xn+1=(aXn+c) mod m其中 mod m 表示前面的数除以m的余数。从这个式子可以看出,这个序列的下一个数总是由

sadnohappy 537

【音视频处理】MP4、FLV、HLS适用范围,在线视频播放哪个更好

本期我们讨论在线点播的视频格式,对比这些视频格式的优劣以及原因 1、封装格式的作用 2、MP4 3、FLV 4、HLS

池鱼 - YiiGaa 2万+

【洛谷P2044】随机数生成器

题目描述 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机数{Xn}: X[n+1]=(aX[n]+c) mod m 其中mod m表示前面的数除以m的余数。从...

weixin_30699235的博客 274

MMSegmentation 安装教程,避免mmcv不合适版本,及相关问题解决

都行,不做要求。

qq_43683133的博客 1220

[软考]系统架构设计师 备考经验分享(一) - 备考计划篇

前言 上周末刚刚结束了软考架构师的考试,自我感觉考的还可以,大概率是过了。 两次参加软考,一次中级嵌入式,一次高级架构师,都是备考不到两个月时间,尤其是架构师这次考试内容和本职工作有不小的差别,并且需要同时备考三个科目,在高强度地备考中感觉是摸索出到了一点软考的技巧与经验。 打算趁还记得,赶紧写几篇文章做下梳理总结,算是给将来自己考系分、高项或者其他考试做个记录,也希望能够帮到正在备考的大家。 先把第一步,个人的备考计划分享给大家。 自身情况分析 首先,请大家一定先明确三个问题,这三个问题会直接影响到你的

_ 6405

BZOJ-3122-随机数生成器-SDOI2013-BSGS

描述 分析 关键就是对式子的变形, 将原递推公式转化为通项公式, 中间会用到等比数列求和公式. 然后切记此时方程两边同乘(1-a), 然后就化简开了. 之后得到的式子是 a^(n-1) = ... (mod p) 然后就可以用BSGS求解了. 注意最后加1. 公式明天补上 几种特判情况 : 如果a = 0, 这时 X = b, 如果t = b输出1, 否则输...

weixin_30593261的博客 151

狗都能看懂的MAML原理讲解和代码实现

meta-leaning指的是元学习,元学习是深度学习的一个分支,一个好的元模型(meta-learner)应该具备对新的、少量的数据做出快速而准确的学习。通俗的来讲, 对于人来说,给几张橘猫的图片让看一下,再给你几张没见过的英短猫图片,你一定能很快识别出来都是猫。但是对于神经网络来说,并非如此。如果让一个小汽车分类网络去识别不同的大货车,那效果肯定很差。而传统的CNN网络都是输入大量的数据,然后进行分类的学习。但是这样做的问题就是,神经网络的通用性太差了,根本达不到“智能”的标准。而人类的认知系统,可以通

个人学习笔记 6万+

NOI2012 随机数生成器

http://www.lydsy.com/JudgeOnline/problem.php?id=2875 【问题描述】栋栋最近迷上了随机算法,而随机数生成是随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m, a, c, X0,按照下面的公式生成出一系列随机数<Xn>: Xn+1= (...

weixin_34056162的博客 137

YonBIP 3.0 报表开发+报表超链接

用友报表开发

m0_55096250的博客 1766

【HCIP-AI 进阶之路(一)】零成本白嫖算力,7天速通华为人工智能资深开发者认证

《HCIP-AIEIDeveloper认证备考指南》摘要:本文深度解析华为HCIP-AI(H13-331)认证考试要点,涵盖考试大纲、评分标准及备考策略。重点剖析昇腾AI全栈架构,包括达芬奇架构核心计算单元(Cube/Vector/Scalar Unit)和四大层级关系(芯片-CANN-框架-应用)。针对无硬件资源的开发者,提供MindSpore CPU版、ModelArts免费算力和沙箱实验室三种零成本实践方案。文章强调该认证对国企/华为生态企业求职者的价值,并指出多选题是主要失分点。下篇将聚焦计算机视觉

2301_82049134的博客 1188

P2044 [NOI2012] 随机数生成器

栋栋知道这样产生的序列具有良好的随机性,不过心急的他仍然想尽快知道 Xn​ 是多少。,g−1 之间的,他需要将 Xn​ 除以 g 取余得到他想要的数,即 Xn ​mod g,你只需要告诉栋栋他想要的数  Xn​ mod g 是多少就可以了。对于 100% 的数据,n,m,a,c,X0​ ≤ 10^18,1 ≤ g ≤ 10^8,n,m≥1,a,c,X0 ​≥ 0。一行 6 个用空格分割的整数 m,a,c,X0​,n 和 g,其中 a,c,X0​ 是非负整数,m,n,g 是正整数。

m0_74039681的博客 529

Zynq7000双核裸机开发实战:如何安全实现共享内存与乒乓RAM设计

本文深入探讨了Zynq7000双核裸机开发中的共享内存与乒乓RAM设计,重点解析了核间通信的Cache一致性处理机制和硬件级实现方案。通过实战代码示例和性能优化技巧,帮助开发者解决双核运行中的访问冲突问题,提升嵌入式系统开发效率。

weixin_29191669的博客 376

BZOJ 2875: [Noi2012]随机数生成器 矩阵乘法

2875: [Noi2012]随机数生成器 Description 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Me thod)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机 数X[n]X[n+1]=(aX[n]+c)mod m其中mod...

dianjia2824的博客 209

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

BZOJ 2875 NOI2012 随机数生成器 矩阵乘法

题目大意:令Xi+1=(a*Xi+c)%m,求Xn%g 水题。。。我们令x矩阵为 a 0 c 1 自乘n次,然后计算(aX0+c)%m%g即可 此题要写快速乘 不然会挂 我这个沙茶居然把矩阵开成了int 早知道多磕点脑残片了 #include #include #include #include using namespace std; typedef unsigned long lo

世界 2037

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【BZOJ】2875: [Noi2012]随机数生成器(矩阵乘法+快速乘)

http://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵的话很容易看出来。。。。。我就不写了。太水了。 然后乘法longlong会溢出。。。那么我们用快速乘。。。就是将快速幂的乘法变成加法。。。这种很简单吧。。 #include <cstdio> #include <cstring> #inclu...

177

[bzoj2875][Noi2012]随机数生成器 矩阵快速幂+快速乘法

传送门Description栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机数X[n]X[n+1]=(aX[n]+c)mod m其中mod m表示前面的数除以m的余数。从这个式子可以看出,这个序列的下一个数总是由...

LvYanchang的博客 330

bzoj2875: [Noi2012]随机数生成器 裸矩阵乘法

裸题,注意细节就可以了,不再赘述。#include #include #include #include #include using namespace std; typedef long long sint; struct matrix { sint a[2][2]; void cl() { memset(a,0,sizeof(a));

IED98的专栏 627

【BZOJ 2875】[Noi2012]随机数生成器 矩阵乘法

乘法要爆long long改成慢速乘或者二位高精就好了 #include #include #include #define LL long long #define rep(i,n) for(int i=1;i<=n;i++) using namespace std; LL mat[3][3],n,m,a,c,x0,g,ans[3][3],e[3][3]; LL mul(LL a,LL b){

pbihao的博客 260

bzoj 2875 [Noi2012]随机数生成器 矩阵乘法

题面 题目传送门 解法 矩阵乘法sb题 注意整数乘法要使用龟速乘,否则会爆long long 代码 #include <bits/stdc++.h> #define int long long using namespace std; struct Matrix { int a[4][4]; void Clear() {memset(a, 0, sizeof(a));}...

weixin_30299709的博客 150

BZOJ 2875: [Noi2012]随机数生成器【矩阵乘法优化递推

裸的矩阵乘法………… 用2*1的矩阵记录当前结果(0,0记录Xi,1,0恒为1表示常数项) 快速乘……懒得写随便找了个O1快速乘_(:зゝ∠)_ 听说是玄学还是别这么乱搞好了2333 #include using namespace std; long long x0,a,c,n,m,g; long long mult(long long u,long long v){ return

Flaze_的博客 556

[BZOJ2875]NOI2012随机数生成器|矩阵乘法

一开始想用等比数列公式搞,但是模数可能为合数。。然后裸上矩乘,注意要用快速乘要不然会爆long long。#include<cstdio> #include<iostream> #include<cmath> #include<memory.h> #define ll long long using namespace std; ll m,a,c,x0,n,g,an; struct ju{

Tag_king的专栏 645

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

2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2052 Solved: 1118 Description Input 包含6个用空格分割的m,a,c,X0,n和g,其中a,c,X0是非负整数,m,n,g是正整数。 Output 输出一个数,即Xn mod g

但行好事,莫问前程. 436

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

题目没给全,吃X了。。。 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 [Submit][Status][Discuss]Description 栋栋最近迷上了随机算法,而随机数生成是随机算法的基础。栋栋准备使用线性同余法(Linear Congruential

DaD3zZ , To be a Beyonder! 724

BZOJ2875 NOI2012 随机数生成器 矩阵乘法+快速幂

题意:Xn+1=(aXn+c)%M,求XN%G 题解:矩阵乘法裸题 #include <cstdio> #include <cstring> #include <cstdlib> #include <climits> #include <iostream> #include <algorithm&gt...

a18700013354的博客 188

bzoj2875: [Noi2012]随机数生成器(矩阵乘法)

题目传送门 。 解法: 矩阵乘法咯。 x0 c 乘 a 0 1 1 乘的过程中有可能爆long long。 打个类似快速幂一样的快速乘就行。原理也是一样。 代码实现: #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include&lt;iostream&gt; #includ...

Hanks_o的博客 323
上一篇: [bzoj2151][贪心]种树
下一篇: [bzoj3212][Pku3468][线段树]A Simple Problem with Integers
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值