P3846-[TJOI2007]可爱的质数【BSGS,数论】

正题

题目链接:https://www.luogu.org/problemnew/show/P3846


题目大意

BL≡N(modP)B^L\equiv N(mod\ P)BLN(mod P)
求最小的LLL


解题思路

首先为了顺眼改一下变量名
Ax≡B(modP)A^x\equiv B(mod\ P)AxB(mod P)
然后我们设x=i∗t−j(0≤i≤t,0≤j≤t−1)x=i*t-j(0\leq i\leq t,0\leq j\leq t-1)x=itj(0it,0jt1)其中t=⌈P⌉t=\lceil \sqrt P\rceilt=P
这样xxx就可以表示任何值
Ai∗t−j≡B(modP)A^{i*t-j}\equiv B(mod\ P)AitjB(mod P)
(At)i≡B∗Aj(modP)(A^t)^i\equiv B*A^j(mod\ P)(At)iBAj(mod P)
那我们可以枚举jjj的所有值并用hashhashhash保存下来B∗Aj%PB*A_j\%PBAj%P的所有可能值。

然后枚举iii(At)i%P(A^t)^i\% P(At)i%PB∗AJ%PB*A_J\%PBAJ%P的值匹配就好了。

因为这里是用mapmapmap实现的

时间复杂度:O(nlogn):O(\sqrt n\ log\sqrt n):O(n logn)


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
ll p,b,n,ans=1e18,t;
map<ll,ll> v;
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%p;x=x*x%p;b>>=1;}return ans;
}
int main()
{scanf("%lld%lld%lld",&p,&n,&b);t=(int)sqrt(p)+1;for(ll i=0;i<t;i++){ll val=b*power(n,i)%p;v[val]=i;}n=power(n,t);if(n==0) {if(!b) printf("1");else printf("no solution");return 0;}for(ll i=0;i<=t;i++){ll val=power(n,i);ll j=v.find(val)==v.end()?-1:v[val];if(j>=0&&i*t-j>=0) ans=min(ans,i*t-j);}if(ans==1e18) printf("no solution");else printf("%lld",ans);
}

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

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

相关文章

Oracle常用查询语句

Oracle常用查询语句 查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前用户的角色SQL>select * from user_role_privs;查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_p…

net的retrofit--WebApiClient库

# 库简介WebApiClient是开源在github上的一个httpClient客户端库&#xff0c;内部基于HttpClient开发&#xff0c;是一个只需要定义c#接口(interface)&#xff0c;并打上相关特性&#xff0c;即可异步调用http-api的框架 &#xff0c;支持.net framework4.5、netcoreapp2.0和ne…

P5021-赛道修建【平衡树,贪心,二分答案】

正题 题目链接:https://www.luogu.org/problemnew/show/P5021 题目大意 一棵树找mmm条不重边路径使得最短的那条最长。 解题思路 首先最小的最大显然二分一下答案。之后问题转换为找最多条长度不小于midmidmid的路径。 如果dpdpdp的话需要二维&#xff0c;显然不能胜任本题…

Sentinel(一)之简介

转载自 Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么&#xff1f; 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从限流、流量整形、熔断降级、系统负…

使用xUnit为.net core程序进行单元测试(中)

第一部分: 使用xUnit为.net core程序进行单元测试(上), 下面有一点点内容是重叠的....String Assert测试string是否相等&#xff1a;[Fact]public void CalculateFullName(){var p new Patient{FirstName "Nick",LastName "Carter"};Assert.Equal(&quo…

P2048-[NOI2010]超级钢琴【RMQ,堆】

正题 题目链接:https://www.luogu.org/problemnew/show/P2048 题目大意 一个长度为nnn序列aaa。寻找kkk个子序列要求长度在L∼RL\sim RL∼R之间&#xff0c;求这kkk个子序列的最大和。 解题思路 首先对aaa求出前缀和数组sss。题目转换为求kkk个数对要求两两之间距离在L∼RL\…

Sentinel(二)之Quick Start

转载自 Sentinel Quick Start 1.1 公网 Demo 如果希望最快的了解 Sentinel 在做什么&#xff0c;我们可以通过 Sentinel 新手指南 来运行一个例子&#xff0c;并且能在云上控制台上看到最直观的监控和流控效果等。 1.2 手动接入 Sentinel 以及控制台 下面的例子将展示应用如…

hdu5115-Dire Wolf【区间dp】

正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid5115 题目大意 有nnn只狼&#xff0c;击败第iii只狼会扣aia_iai​加上于其相邻的狼的blbrb_lb_rbl​br​点hphphp。注意该狼被击败后会使原来于其相邻的狼变的相邻。 解题思路 显然区间dpdpdp&#xff0c;设fi,jf_…

.net的retrofit--WebApiClient库深入篇

前言本篇文章的内容是对上一篇.net的retrofit--WebApiClient库的深层次补充&#xff0c;你可能需要先阅读上一篇才能理解此篇文章。本文将详细地讲解WebApiClient的原理&#xff0c;结合实际项目中可能遇到的问题进行使用说明。库简介WebApiClient是开源在github上的一个httpCl…

Sentinel(三)之如何使用

转载自 Sentinel如何使用 简介 Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard&#xff0c;但是结合 Dashboard 可以取得最好的效果。 这篇文章主要介绍 Sentinel 核心库的使用。如果希望有一个最快最直接的了解&#xff0c;可以参考 新手指…

jzoj4485-[GDOI 2016 Day1]第一题 中学生数学题【数学】

正题 题目大意 给出n0,k,p0n_0,k,p_0n0​,k,p0​ 然后有两问&#xff0c;求 ⌊n0−kp⌋(p−p0)\lfloor n_0-kp\rfloor (p-p_0)⌊n0​−kp⌋(p−p0​)的最大值&#xff0c;ppp为任意实数。⌊n0−kp1⌋(p1−p0)(⌊n0−kp2⌋−n1)(p2−p0)\lfloor n_0-kp_1\rfloor (p_1-p_0)(\lf…

ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)

上一篇ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ,我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础功能而已..所以今天我们主要讲讲如何采用Autofac来替换IOC容器,并实现属性注入注意:本文需要读者理解DI IOC并使用过…

Sentinel(四)之工作主流程

转载自 工作主流程 Overview 在 Sentinel 里面&#xff0c;所有的资源都对应一个资源名称&#xff08;resourceName&#xff09;&#xff0c;每次资源调用都会创建一个 Entry 对象。Entry 可以通过对主流框架的适配自动创建&#xff0c;也可以通过注解的方式或调用 SphU API…

常用的依赖

<!--指定版本--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version><relativePath/></parent><!--引入插件lombok 自动的set…

在 .NET Core 中的并发编程

原文地址:http://www.dotnetcurry.com/dotnet/1360/concurrent-programming-dotnet-core今天我们购买的每台电脑都有一个多核心的 CPU&#xff0c;允许它并行执行多个指令。操作系统通过将进程调度到不同的内核来发挥这个结构的优点。然而&#xff0c;还可以通过异步 I/O 操作和…

P5007-DDOSvoid的疑惑【树形dp】

正题 题目链接:https://www.luogu.org/problemnew/show/P5007 题目大意 一棵树每个点有点权(若T0T0T0点权为1&#xff0c;若T1T1T1点权为该点的编号)。求所有不包含祖先关系的集合的点权之和的和。 解题思路 设fif_ifi​表示iii的子树的集合点权之和&#xff0c;gig_igi​表…

配置YML整合Mybatis-映射文件配置

YML基本配置 #端口配置 server:port: 8090#配置数据源 spring:datasource:#如果使用高版本驱动 则添加cjdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/jt?serverTimezoneGMT%2B8&useUnicodetrue&characterEncodingutf8&autoRe…

Sentinel(五)之流量控制

转载自 流量控制 概述 流量控制&#xff08;flow control&#xff09;&#xff0c;其原理是监控应用流量的 QPS 或并发线程数等指标&#xff0c;当达到指定的阈值时对流量进行控制&#xff0c;以避免被瞬时的流量高峰冲垮&#xff0c;从而保障应用的高可用性。 FlowSlot 会…

jzoj4382-[GDOI2016模拟3.11]历史【并查集】

正题 题目大意 有若干个事件 Kc:cK\ c:cK c:c值更改并且清除生气状态Rxy:R\ x\ y:R x y:新建一条x′x&#x27;x′到y′y&#x27;y′的边&#xff0c;若当前处于生气状态则x(x′n−c)%n,y(y′n−c)%nx(x&#x27;n-c)\%n,y(y&#x27;n-c)\%nx(x′n−c)%n,y(y′n−c)%n&a…

MP实现分页查询

/*** 需求: 实现商品分页查询* param pageResult* return*/Overridepublic PageResult getItemList(PageResult pageResult) {IPage page new Page(pageResult.getPageNum(),pageResult.getPageSize());QueryWrapper<Item> queryWrapper new QueryWrapper<>();//…