2023牛客暑期多校训练营9-B Semi-Puzzle: Brain Storm

news2025/1/21 0:57:36

2023牛客暑期多校训练营9-B Semi-Puzzle: Brain Storm

https://ac.nowcoder.com/acm/contest/57363/B

文章目录

  • 2023牛客暑期多校训练营9-B Semi-Puzzle: Brain Storm
    • 题意
    • 解题思路
    • 代码

题意

在这里插入图片描述

解题思路

欧拉定理
a b ≡ { a b % φ ( p )    g c d ( a , p ) = 1 a b    g c d ( a , p ) ≠ 1 , b < φ ( p ) a b % φ ( p ) + φ ( p )    g c d ( a , p ) ≠ 1 , b ≥ φ ( p ) a^b\equiv \begin{cases} &a^{b\%\varphi(p)}~~&gcd(a,p)=1\\ &a^b~~&gcd(a,p)\neq 1,b<\varphi(p)\\ &a^{b\%\varphi(p)+\varphi(p)}~~&gcd(a,p)\neq 1,b\ge\varphi(p) \end{cases} ab ab%φ(p)  ab  ab%φ(p)+φ(p)  gcd(a,p)=1gcd(a,p)=1,b<φ(p)gcd(a,p)=1,bφ(p)
a u ≡ u ( m o d p ) 设 d = u % φ ( p ) + φ ( p ) u = d + k φ ( p ) a d + k φ ( p ) ≡ d + k φ ( p ) ( m o d p ) a d − d ≡ k φ ( p ) ( m o d p ) \begin{matrix} a^u\equiv u\pmod p\\ 设d=u\%\varphi(p)+\varphi(p)\\ u=d+k\varphi(p)\\ a^{d+k\varphi(p)}\equiv d+k\varphi(p)\pmod p\\ a^d-d\equiv k\varphi(p)\pmod p \end{matrix} auu(modp)d=u%φ(p)+φ(p)u=d+kφ(p)ad+kφ(p)d+kφ(p)(modp)addkφ(p)(modp)
将取余打开,可得:
φ ( p ) x + p y = a d − d \begin{matrix} \varphi(p)x+py=a^d-d \end{matrix} φ(p)x+py=add
显然可以用扩展欧几里得求解当 φ ( p ) x + p y = gcd ⁡ ( p , ϕ ( p ) ) \varphi(p)x+py=\gcd(p,\phi(p)) φ(p)x+py=gcd(p,ϕ(p))的解,为保证 d d d有解,故 gcd ⁡ ( p , φ ( p ) ) ∣ a d − d \gcd(p,\varphi(p))\mid a^d-d gcd(p,φ(p))add,设 a d − d = h gcd ⁡ ( φ ( p ) , p ) a^d-d=h\gcd(\varphi(p),p) add=hgcd(φ(p),p),故 a d = h gcd ⁡ ( φ ( p ) , p ) + d a^d=h\gcd(\varphi(p),p)+d ad=hgcd(φ(p),p)+d,可以发现 a d ≡ d ( m o d gcd ⁡ ( φ ( p ) , p ) ) a^d\equiv d\pmod{\gcd(\varphi(p),p)} add(modgcd(φ(p),p)),可以发现形式上与 a u ≡ u ( m o d p ) a^u\equiv u\pmod p auu(modp),显然当 p = 1 p=1 p=1时, u = 0 u=0 u=0,有了边界条件,可以递归求出 u u u u = d + k φ ( p ) u=d+k\varphi(p) u=d+kφ(p) k k k即为 φ ( p ) x + p y = a d − d \varphi(p)x+py=a^d-d φ(p)x+py=add x x x的解,当求出 φ ( p ) x 0 + p y 0 = gcd ⁡ ( p , ϕ ( p ) ) \varphi(p)x_0+py_0=\gcd(p,\phi(p)) φ(p)x0+py0=gcd(p,ϕ(p)):
x = x 0 × ( a d − d gcd ⁡ ( φ ( p ) , p ) % p ) = x 0 × ( ( a d − d ) % p gcd ⁡ ( φ ( p ) , p ) ) \begin{matrix} x=&x_0\times(\dfrac{a^d-d}{\gcd(\varphi(p),p)}\% p)\\ =&x_0\times(\dfrac{(a^d-d)\% p}{\gcd(\varphi(p),p)}) \end{matrix} x==x0×(gcd(φ(p),p)add%p)x0×(gcd(φ(p),p)(add)%p)

代码

#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
using namespace std;
ll T,a,m;
ll phi(ll n){
	ll sum=n;
	for(ll i=2;i*i<=n;i++){
		if(n%i==0){
			while(n%i==0)n/=i;
			sum/=i,sum*=i-1;
		}
	}
	
	if(n>1)return sum/n*(n-1);
	return sum;
}
ll exgcd(ll a,ll b,ll &x,ll &y){
	if(!b){
		x=1,y=0;
		return a;
	}
	ll v=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return v;
}
ll power(ll x,ll p,ll mod){
	ll res=1;
	while(p){
		if(p&1)res*=x,res%=mod;
		x*=x,x%=mod;
		p>>=1;
	}
	return res;
}
ll dfs(ll a,ll p){
	if(p==1)return 0;
	ll ph=phi(p);
	ll x,y;
	ll v=exgcd(ph,p,x,y);
	x=(x%p+p)%p;
	ll d=dfs(a,v)+ph;
	return d+(x*((power(a%p,d,p)-d%p+p)%p/v)%p)*ph;
}
void solve(){
	cin>>a>>m;
	ll x=dfs(a,m);
	cout<<x<<'\n';
}
int main(){
	cin>>T;
	while(T--)solve();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/883941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

认识excel篇3之数据的有效性(数据验证)

数据有效性不仅能够对单元格的输入数据进行条件限制&#xff0c;还可以在单元格中创建下拉列表菜单方便用户选择输入。如果没有做数据验证&#xff0c;单元格内默认可以输入任意类型的数据。数据验证就是限制单元格输入数据&#xff08;必须输入符合要求的才能输入&#xff09;…

OpenCV-Python中的图像处理-视频分析

OpenCV-Python中的图像处理-视频分析 视频分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 视频分析 学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象: Meanshift算法 Meanshift 算法的基本原理是和很简单的。假设我们有一堆…

使用Logstash将数据从MySQL同步至Elasticsearch(有坑)

文章目录 一、准备工作1、安装elasticSearchkibana2、安装MySQL3、安装Logstash 二、全量同步1、准备MySQL数据与表2、上传mysql-connector-java.jar3、启动Logstash4、修改logstash.conf文件5、修改full_jdbc.sql文件6、打开Kibana创建索引和映射7、重启logstash进行全量同步8…

linux 系统中vi 编辑器和库的制作和使用

目录 1 vim 1.1 vim简单介绍 1.2 vim的三种模式 1.3 vim基本操作 1.3.1命令模式下的操作 1.3.2 切换到文本输入模式 1.3.3 末行模式下的操作 2 gcc编译器 2.1 gcc的工作流程 2.2 gcc常用参数 3 静态库和共享&#xff08;动态&#xff09;库 3.1库的介绍 3.2静态…

Dockerfile自定义镜像

文章目录 Dockerfile自定义镜像镜像结构Dockerfile语法构建java项目 小结 Dockerfile自定义镜像 常见的镜像在DockerHub就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就必须先了解镜像的结构才行。 镜像结构 镜像是将应用程序及…

PyTorch基础(16)-- torch.gather()方法

一、前言 在实现DQN的过程中&#xff0c;torch.gather()这个方法引起了我的注意&#xff0c;原因有二&#xff1a;1&#xff09;这个函数在我硕士期间很少遇见&#xff0c;用到的次数更是少之又少&#xff1b;2&#xff09;torch.gather()这个方法是如何使用的呢&#xff0c;以…

[HZNUCTF 2023 preliminary] 2023杭师大校赛(初赛) web方向题解wp 全

ezflask 先看题目&#xff0c;应该是模板注入&#xff08;SSTI&#xff09;&#xff0c;输入{{7*‘7’}}直接报错误。 发现模板是反序输出的&#xff0c;怪不得不能直接输入{{}}。 输入}}‘7’*7{{返回777777&#xff0c;是jinja2 //直接手打&#xff0c;无所谓我是怨种 ?nam…

Mysql中使用存储过程插入decimal和时间数据递增的模拟数据

场景 Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据&#xff1a; Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据_mysql循环插入随机数据_霸道流氓气质的博客…

【第三阶段】kotlin语言中的先决条件函数

用于函数内部判断异常&#xff0c;节省开发 1.checkNotNull&#xff08;&#xff09;如果传入为null则抛出异常 fun main() {var name:String?nullcheckNotNull(name) }执行结果 2.requireNotNull ()如果传入为null则抛出异常 fun main() {var name:String?nullrequireNot…

基于PSO-KELM的时间序列数据预测(含对比实验)

前段时间有粉丝私信想让我出一期对时间序列预测的文章&#xff0c;所以今天它来了。 时间序列数据&#xff0c;如股指价格&#xff0c;具有波动性、非线性和突变的特点&#xff0c;对于这类数据的预测往往需要可靠强健的预测模型&#xff0c;而传统的机器学习算法如SVM、BP等…

详解RFC 793文档-3

3.4 建立连接 三次握手用来建立连接,这个过程通常由一个TCP发起,并由另一个TCP响应。如果两个TCP同时启动该过程,该过程也可以工作。这说明客户端和服务器可以同时发起连接请求,且能够连接成功。当同时尝试连接时,每个TCP在发送自己的SYN后接收到一个不携带任何ACK确认的…

分布式 - 服务器Nginx:一小时入门系列之代理缓冲与缓存

官方文档&#xff1a;https://nginx.org/en/docs/http/ngx_http_proxy_module.html 1. 代理缓冲 proxy_buffer 代理缓冲用于临时存储从后端服务器返回的响应数据。通过使用代理缓冲&#xff0c;Nginx可以在接收完整的响应后再将其发送给客户端&#xff0c;从而提高性能和效率…

从零实现kv存储V2.0

在V1.0版本&#xff0c;我们实现了基于array的kv存储引擎。本文继续完善&#xff0c;增加rbtree、hash、skiptable引擎。 实际上&#xff0c;在框架确定的基础上&#xff0c;其他的引擎只需要添加接口即可。 一、架构设计 二、具体实现 2.1 引擎层 //---------------------…

第14集丨Vue2 基础 —— 生命周期

目录 一、引子1.1 实现一1.2 一个死循环的写法1.3 mounted实现 二、生命周期2.1 概念2.2 常用的生命周期钩子2.3 关于销毁Vue实例注意点2.4 vm的一生(vm的生命周期)2.5 生命周期图示 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如&#xff0c;需要设置数据监听、…

轻量级自动化测试框架WebZ

一、什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架&#xff0c;基于WebDriver。 设计该框架的初衷是&#xff1a;用自动化测试让测试人员从一些简单却重复的测试中解放出来。之所以用“关键字驱动”模式是因为我觉得这样能让测试人员&#xff08;测试执行人员…

企业权限管理(十三)-用户关联角色操作

用户关联角色操作 从前台发送请求 <a href"${pageContext.request.contextPath}/user/findUserByIdAndAllRole.do?id${user.id}" class"btn bg-olive btn-xs">添加角色</a>查询用户以及用户可以添加的角色 usercontroller //查询用户以及用…

k8s 自身原理之 Service

好不容易&#xff0c;终于来到 k8s 自身的原理之 关于 Service 的一部分了 前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的&#xff0c;且通信的数据包是不会经过 NAT 网络地址转换的 那么 Service 又是如何实现呢&#xff1f; Service 我们知道是用…

网神 SecGate 3600 防火墙任意文件上传漏洞复现

0x01 产品简介 网神SecGate3600下一代极速防火墙&#xff08;NSG系列&#xff09;是基于完全自主研发、经受市场检验的成熟稳定网神第三代SecOS操作系统 并且在专业防火墙、VPN、IPS的多年产品经验积累基础上精心研发的高性能下一代防火墙 专门为运营商、政府、军队、教育、大型…

图扑数字孪生智慧乡村综合管控平台

数字乡村是伴随网络化、信息化和数字化在农业农村经济社会发展中的应用&#xff0c;既是乡村振兴的战略方向&#xff0c;也是建设数字中国的重要内容。为了进一步提升乡村治理智能化、专业化水平&#xff0c;解决建设顶层缺失、数据孤岛等问题&#xff0c;数字孪生技术被广泛应…

工控机防病毒

2月3日&#xff0c;作为全球最大的半导体制造设备和服务供应商&#xff0c;美国应用材料公司&#xff08;Applied Materials&#xff09;表示&#xff0c;有一家上游供应商遭到勒索软件攻击&#xff0c;由此产生的关联影响预计将给下季度造成2.5亿美元&#xff08;约合人民币17…