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 ...
随机推荐
- FineUIMvc随笔(3)不能忘却的回发(__doPostBack)
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户反馈 有网友在官方论坛抛出了这么一个问题,似乎对 FineUIMvc 中的浏览器端与服务器端的交互方式很有异议. 这里面的关 ...
- Java获取文件Content-Type的四种方法
HTTP Content-Type在线工具 有时候我们需要获取本地文件的Content-Type,已知 Jdk 自带了三种方式来获取文件类型. 另外还有第三方包 Magic 也提供了API.Magic ...
- Asp.Net Core实战(干货)
序言 使用.NET Core,团队可以更容易专注的在.net core上工作.比如核心类库(如System.Collections)的更改仍然需要与.NET Framework相同的活力,但是ASP. ...
- Linux Namespace : UTS
UTS namespace 用来隔离系统的 hostname 以及 NIS domain name.UTS 据称是 UNIX Time-sharing System 的缩写. hostname 与 N ...
- MySQL 5.6中如何定位DDL被阻塞的问题
在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...
- 使用redis实现生产者消费者模式
本次主要分享一下使用redis做缓存队列,实现生产者消费者模式. 首先先来看一下redis提供的列表操作接口.像ListRightPush就和符合队列先进先出的原则. 然后围绕这个列表已下单为例简要实 ...
- pycharm导入自己写的.py文件时,模块下方出现红色波浪线解决
点击菜单栏的File,选择Setting, 然后,选择需要导入的.py文件“所在的目录",而非项目根目录,右键 之后再导入该.py文件就不会出现红色波浪线了.
- PS提亮户外儿童照
(@摄影师延延)作品 调整完的图. 原图. 再看原图.好吧,这张照片明显欠曝了,蘑菇酱的小脸黑黑的.但是构图啊蘑菇酱的神情啊都不错捏.好在蘑菇妈是用raw格式拍,即刻Lightroom调整无压力. 1 ...
- WebSocket实现一个聊天室
聊天室页面-->index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- JavaScript中防止重复提交
有这么一种情况: 页面有一个按钮,点击之后会触发Ajax请求,但是用户在点击之后,不知道是否点成功了,于是又点了一下,如果不加处理的话,就会进行两次Ajax请求,并且请求的数据都是一样的,对后端的程序 ...