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

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.hqwc.cn/news/70050.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试工具——Postman测试工具 Swagger接口测试+SpringBoot整合 JMeter高并发测试工具

目录 Postman测试工具接口测试工具swaggerKnife4j1.引入依赖2.配置3.常用注解4.接口测试 JMeter什么是JMeter?JMeter安装配置1.官网下载2.下载后解压3.汉语设置 JMeter的使用方法1.新建线程组2.设置参数3.添加取样器4.设置参数&#xff1a;协议&#xff0c;ip&#xff0c;端口…

代码审计-ASP.NET项目-未授权访问漏洞

代码审计必备知识点&#xff1a; 1、代码审计开始前准备&#xff1a; 环境搭建使用&#xff0c;工具插件安装使用&#xff0c;掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集&#xff1a; 审计目标的程序名&#xff0c;版本&#xff0c;当前环境(系统,中间件…

图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

然后我们再来看如何删除节点 可以看到首先 我们这里 比如我要删除张三 可以看到 match (n:student) where n.name = "张三" delete n 这样就是删除了student集合中,name是张三的节点 然后我们再来看 如何来删除关系 match (n:student)-[r]->(m:student) where…

Unity UI内存泄漏优化

项目一运行&#xff0c;占用的内存越来越多&#xff0c;不会释放&#xff0c;导致GC越来越频繁&#xff0c;越来越慢&#xff0c;这些都是为什么呢&#xff0c;今天从UI方面谈起。 首先让我们来聊聊什么是内存泄漏呢&#xff1f; 一般来讲内存泄漏就是指我们的应用向内存申请…

安装PaddleOCR-2.7.0版本-笔记

安装PaddleOCR-2.7.0版本-笔记 先安装conda和python版本 本机安装的conda 22.9.0 python2.9.12 paddle2.4.2 paddlepaddle-gpu2.4.2 cuda10.2 安装完后&#xff0c;测试生成的结果如下所示&#xff1a; 一、第一步先激活环境 conda activate base conda activate base二、第…

FastAPI入门

目录 FastAPI FastAPI 是什么 为什么要用 FastAPI FastAPI 入门 安装 用 FastAPI 写个接口 调试接口 创建快捷请求 保存为快捷请求 发送请求 总结 FastAPI FastAPI 是什么 什么是 FastAPI 呢&#xff1f; FastAPI 是 Python 的一个框架&#xff0c;如果要类比的话…

ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考

文章目录 一、前言二、问题描述三、问题解决四、拓展阅读五、拓展阅读 一、前言 在应用RN开发跨平台APP阶段&#xff0c;从git中拉取项目&#xff0c;应用Jenkins进行组包时&#xff0c;发现最终生成的ipa安装包版本号始终与项目中设置的版本号不一致。 二、问题描述 经过仔…

C++11并发与多线程笔记(3)线程传参详解,detach()大坑,成员函数做线程函数

C11并发与多线程笔记&#xff08;3&#xff09;线程传参详解&#xff0c;detach 大坑&#xff0c;成员函数做线程函数 1、传递临时对象作为线程参数1.1 要避免的陷阱11.2 要避免的陷阱21.3 总结 2、临时对象作为线程参数2.1 线程id概念2.2 临时对象构造时机抓捕 3、传递类对象…

Mac OS minicom 无法设置921600问题

MacOS minicom 无法设置921600问题 介绍过程解决方案参考资料 介绍 minicom是Mac上一款非常好用的串口工具。本文假设你已经安装minicom&#xff0c;并且知道minicom的一般配置和使用方法。这是“MacOS minicom 无法设置921600”的解决问题记录。它在以下环境中设置成功&#…

flutter:webview_flutter的简单使用

前言 最近在研究如何在应用程序中嵌入Web视图&#xff0c;发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求&#xff0c;就使用了官方库&#xff0c;实现一些简单功能是完全ok的 基本使用 官方文档 https://pub-web.flutter-io.cn/packages/webv…

ansible 修改远程主机nginx配置文件

安装ansible brew install ansible 或者 pip3 install ansible 添加远程主机 设置秘钥 mac登录远程主机 ssh -p 5700 root192.168.123.211 ssh localhost #设置双机信任 ssh-kyegen -t rsa #设置主机两边的ssh配置文件 vi /etc/ssh/sshd_config/ PermitRootL…

Python Opencv实践 - 图像金字塔

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像上采样 #cv.pyrUp(src, dstNone, dstsizeNone, borderTypeNone) #参考资料&#xff1a;https://blo…