BZOJ2480Spoj3105 Mod&BZOJ1467Pku3243 clever Y——EXBSGS
题目描述
输入
输出
样例输入
2 4 3
0 0 0
样例输出
No Solution
提示
100%的数据,a,p,b≤1e9。
$EXBSGS$模板题,注意特判当$p=1$时输出$0$。
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
map<int,int>mp;
ll a,b,p,ans;
inline ll gcd(ll x,ll y)
{
return y==0?x:gcd(y,x%y);
}
inline void exgcd(ll &x,ll &y,ll a,ll b)
{
if(!b)
{
x=1,y=0;
return ;
}
exgcd(y,x,b,a%b);
y-=(a/b)*x;
return ;
}
inline ll quick(ll x,ll y,ll mod)
{
ll res=1ll;
while(y)
{
if(y&1)
{
res=res*x%mod;
}
y>>=1;
x=x*x%mod;
}
return res;
}
inline ll BSGS(ll a,ll b,ll p,ll g)
{
ll x,y;
ll m=ceil(sqrt(p));
exgcd(x,y,g,p);
b=(b*x%p+p)%p;
ll num=quick(a,m,p);
exgcd(x,y,num,p);
num=(x%p+p)%p;
ll sum=1ll;
mp.clear();
for(int i=0;i<=m;i++)
{
if(!mp.count(sum))
{
mp[sum]=i;
}
sum*=a,sum%=p;
}
for(int i=0;i<=m;i++)
{
if(mp[b])
{
return mp[b]+i*m;
}
b*=num,b%=p;
}
return -1;
}
inline int EX_BSGS(int a,int b,int p)
{
ll g=1ll;
ll k=0;
ll d,ans;
if(b==1)
{
return 0;
}
while((d=gcd(a,p))!=1)
{
if(b%d)
{
return -1;
}
k++,b/=d,p/=d,g=g*(a/d)%p;
if(g==b)
{
return k;
}
}
ans=BSGS(a,b,p,g);
return ans==-1?-1:ans+k;
}
int main()
{
while(scanf("%d%d%d",&a,&p,&b))
{
if(!a&&!b&&!p)
{
break;
}
if(p==1)
{
printf("0\n");
continue;
}
ans=EX_BSGS(a,b,p);
printf(ans==-1?"No Solution\n":"%d\n",ans);
}
}
BZOJ2480Spoj3105 Mod&BZOJ1467Pku3243 clever Y——EXBSGS的更多相关文章
- 【BZOJ1467/2480】Pku3243 clever Y/Spoj3105 Mod EXBSGS
[BZOJ1467/2480]Pku3243 clever Y/Spoj3105 Mod Description 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. Input ...
- bzoj1467 Pku3243 clever Y
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 313 Solved: 181[Submit][Status ...
- 【EX_BSGS】BZOJ1467 Pku3243 clever Y
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 425 Solved: 238[Submit][Status ...
- luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法
BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...
- bzoj 1467: Pku3243 clever Y 扩展BSGS
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 小 ...
- [拓展Bsgs] Clever - Y
题目链接 Clever - Y 题意 有同余方程 \(X^Y \equiv K\ (mod\ Z)\),给定\(X\),\(Z\),\(K\),求\(Y\). 解法 如题,是拓展 \(Bsgs\) 板 ...
- poj3243 Clever Y[扩展BSGS]
Clever Y Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8666 Accepted: 2155 Descript ...
- MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS
思路: 前两题题面相同,代码也相同,就只贴一题的题面了.这三题的意思都是求A^X==B(mod P),P可以不是素数,EXBSGS板子题. SPOJ3105题目链接:https://www.spoj. ...
- POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)
不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostre ...
随机推荐
- Highchartsjs使用总结及实时动态刷新图
柱状图: $('#container').highcharts({ //突显红色柱: series: [ 523, 345, 785, 565, 843,{'color': 'red','y': 30 ...
- Python学习第十六篇——异常处理
在实际中,很多时候时候,我们并不能保证我们所写的程序是完美的.比如我们程序的本意是:用户在输入框内输入数字,并进行后续数学运算,即使我们提醒了用户需要输入数字而不是文本,但是有时会无意或者恶意输入字符 ...
- [2019BUAA软工助教]结对编程 - 小结
[2019BUAA软工助教]结对编程 - 小结 一.评分规则 博客 博客共五十分 序号 要求 分值 1 在文章开头给出Github项目地址 1 2 在开始实现程序之前,在下述PSP表格记录下你估计将在 ...
- p86商空间也是Banach空间
1.为什么要引入Zk? 2.为什么这个等式成立,和为什么要引入uk? 3.为什么为什么等于0? 属于M,则商空间是0元,p128最上面的第二个笔记
- 使用HDTune规避硬盘上损坏的扇区
如何使用HDTune扫描磁盘上的错误在网上已经有很多帖子了,但扫描到之后如何用HDTune来规避硬盘上损坏的扇区呢? HDTune并不能直接规避,而是需要重新划分磁盘的卷.HDTune一行有50个小方 ...
- Python_守护进程、锁、信号量、事件、队列
1.创建进程 守护进程(*****) _.daemon = True # _进程成为守护进程 守护进程也是一个子进程. 主进程的<代码>执行结束之后守护进程自动结束. import ti ...
- Python之加密模块
hashlib模块 加密方式以md5方式加密举例 是标准模块,直接导入即可 还有其他的加密方式,比如:.sha1()..sha224()..sha256()等,加密后的字符串长度更长,安全性更高 一. ...
- MySql concat与字符转义
mysql函数之四:concat() mysql 多个字段拼接 - duanxz - 博客园https://www.cnblogs.com/duanxz/p/5098875.html mysql 多个 ...
- spring datasource jdbc 密码 加解密
spring datasource 密码加密后运行时解密的解决办法 - 一号门-程序员的工作,程序员的生活(java,python,delphi实战)http://www.yihaomen.com/a ...
- Android下的软件合集
在平常使用Android手机的时候,选择一个好的软件可以做到事半功倍的效果,所以在此总结一下,加速我们的工作与生活效率 1) ConnectBot ConnectBot是一个Android操作系统上的 ...