题目传送门

前置知识

大步小步算法

题意

多组询问,每次询问依次给定 \(p,a,b\),求 \(a^{x} \equiv b \pmod{p}\) 的最小非负整数解,其中 \(a,p\) 互质。

解法

BSGS 板子题,不做过多介绍。

貌似本题比 P3846 [TJOI2007] 可爱的质数/【模板】BSGSBZOJ3239 Discrete Logging 数据较强,记得特判 \(b \bmod p=1\) 时的情况。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define sort stable_sort
#define endl '\n'
ll qpow(ll a,ll b,ll p)
{
ll ans=1;
while(b>0)
{
if(b&1)
{
ans=ans*a%p;
}
b>>=1;
a=a*a%p;
}
return ans;
}
ll bsgs(ll a,ll b,ll p)
{
if(1%p==b%p)
{
return 0;
}
else
{
map<ll,ll>vis;
ll k=sqrt(p)+1,i,sum;
for(i=0;i<=k-1;i++)
{
vis[b*qpow(a,i,p)%p]=i;
}
a=qpow(a,k,p);
for(i=0;i<=k;i++)
{
sum=qpow(a,i,p);
if(vis.find(sum)!=vis.end())
{
if(i*k-vis[sum]>=0)
{
return i*k-vis[sum];
}
}
}
return -1;
}
}
int main()
{
ll a,b,p,ans;
while(cin>>p>>a>>b)
{
ans=bsgs(a,b,p);
if(ans==-1)
{
cout<<"no solution"<<endl;
}
else
{
cout<<ans<<endl;
}
}
return 0;
}

后记

推荐一个辅助调试 Uva 题目的网站 udebug

虽然可能已经人尽皆知了。

UVA10225 Discrete Logging 题解的更多相关文章

  1. 题解 UVA10225 Discrete Logging

    本题是一道 \(BSGS\) 裸题,用于求解高次同余方程,形如 \(a^x\equiv b(\mod p)\),其中 \(a\),\(p\) 互质(不互质还有 \(EXBSGS\)). 建议多使用 \ ...

  2. 【BSGS】BZOJ3239 Discrete Logging

    3239: Discrete Logging Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 729  Solved: 485[Submit][Statu ...

  3. 【BZOJ3239】Discrete Logging BSGS

    [BZOJ3239]Discrete Logging Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B ...

  4. [POJ2417]Discrete Logging(指数级同余方程)

    Discrete Logging Given a prime P, 2 <= P < 2 31, an integer B, 2 <= B < P, and an intege ...

  5. poj 2417 Discrete Logging ---高次同余第一种类型。babystep_gaint_step

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2831   Accepted: 1391 ...

  6. BSGS算法+逆元 POJ 2417 Discrete Logging

    POJ 2417 Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4860   Accept ...

  7. POJ 2417 Discrete Logging (Baby-Step Giant-Step)

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2819   Accepted: 1386 ...

  8. POJ2417 Discrete Logging【BSGS】

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5577   Accepted: 2494 ...

  9. Discrete Logging

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5865   Accepted: 2618 ...

  10. BSGS 扩展大步小步法解决离散对数问题 (BZOJ 3239: Discrete Logging// 2480: Spoj3105 Mod)

    我先转为敬? orz% miskcoo 贴板子 BZOJ 3239: Discrete Logging//2480: Spoj3105 Mod(两道题输入不同,我这里只贴了3239的代码) CODE ...

随机推荐

  1. java基础-数组-day06

    1. 引入数组 录入10个学生的成绩 求和 求平均 import java.util.Scanner; public class TestArray01{ public static void mai ...

  2. 如何开发一套苹果cms前端模板

    本文运用了苹果cms官网的模板开发教程,开发了一套苹果cms的前端模板,感兴趣的同学可以去github下载使用. 什么是模板 模板是网站的主题外观,也被称为主题或皮肤.通过使用不同的模板,网站的前台可 ...

  3. 结构体中ElementType的使用

    1.问题 在定义结构体时,对于元素值,为什么喜欢使用ElementType而不是直接使用int或者char等等? 2.结论 对于int get_result(int x); 和 int get_res ...

  4. 2023年度总结,互联网寒冬是躺平OR寻找风口

    一.前言 又到了年底,这一年过的真的好快,犹如白驹过隙. 身体快跃过去了,灵魂还没有. 拿起键盘却迟迟无法下手,经过三天终于完成了! 这是很颓很丧的一年,很难看到自己的成长,就像登山卡在半山腰,开车堵 ...

  5. DASCTF X CBCTF 2023|无畏者先行 CRYPTO—WP

    EzRSA 1.题目信息 from Crypto.Util.number import * import random from gmpy2 import * from libnum import * ...

  6. Go-测试-testing

  7. [转帖]NUMA导致的Oracle性能问题

    https://www.cnblogs.com/realcp1018/p/6903721.html 背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dat ...

  8. kafka的学习之二_kafka的压测与GUI管理

    kafka的学习之二_kafka的压测与GUI管理 第一部分创建topic cd /root/kafka_2.13-3.5.0 bin/kafka-topics.sh --create --boots ...

  9. [转帖]超能课堂(323) 为什么WiFi实际速率只有标称速率的一半?

    超能课堂(323) 为什么WiFi实际速率只有标称速率的一半? 开始的地方 协议速率与实际速率有何不同? 什么是"全双工"与"半双工"? 无线网络与有线网络的抗 ...

  10. OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试

    背景 其实文件搭建和集群搭建没有任何区别 这次用先用容器搭建出来,然后测试一下性能 想着再使用本地部署的方式搭建一下. 两项验证容器和基于文件的搭建的性能差异 部分资料来源: https://blog ...