用于求解高次同余方程A^x≡B(mod C),其中C不一定是素数。

http://blog.csdn.net/tsaid/article/details/7354716

这篇题解写得最好。

那啥,这题的坑点请去看discuss。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(!b)
{
d=a;
x=1;
y=0;
}
else
{
exgcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
#define MAXN 100001
#define MOD 100003
struct HashTable
{
ll v[MAXN];
int __next[MAXN],first[MOD],en,a[MAXN];
void Insert(ll x,int J){
if(Find(x)!=-1){
return;
}
int o=x%MOD;
v[en]=x;
a[en]=J;
__next[en]=first[o];
first[o]=en++;
}
int Find(ll x){
int o=x%MOD;
for(int i=first[o];i!=-1;i=__next[i]){
if(v[i]==x){
return a[i];
}
}
return -1;
}
void Clear(){
memset(first,-1,sizeof(first));
en=0;
}
}T;
ll a,b,p;
int main(){
// freopen("d.in","r",stdin);
while(1){
scanf("%lld%lld%lld",&a,&p,&b);
if(a==0 && b==0 && p==0){
break;
}
T.Clear();
b%=p;
ll tmp,D=1;
int cnt=0;
bool flag=0;
while((tmp=__gcd(a,p))!=1){
if(b%tmp){
puts("No Solution");
flag=1;
break;
}
++cnt;
p/=tmp;
b/=tmp;
D=D*a/tmp%p;
}
if(flag){
continue;
}
int m=ceil(sqrt(p));
ll aj=1;
T.Insert(aj,0);
for(int j=1;j<=m;++j){
aj=(a%p*aj)%p;
T.Insert(aj,j);
}
for(int i=0;i<=m;++i){
ll x,y,d;
exgcd(D,p,d,x,y);
x=x*(b/d);
x=(x%(p/d)+p/d)%(p/d);
int J;
if((J=T.Find(x))!=-1){
printf("%lld\n",(ll)i*(ll)m+(ll)J+(ll)cnt);
flag=1;
break;
}
D=(D*aj)%p;
}
if(!flag){
puts("No Solution");
}
}
return 0;
}

【数论】【ex-BSGS】poj3243 Clever Y的更多相关文章

  1. poj3243 Clever Y[扩展BSGS]

    Clever Y Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 8666   Accepted: 2155 Descript ...

  2. luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法

    BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...

  3. 【POJ3243】【拓展BSGS】Clever Y

    Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...

  4. bzoj 1467: Pku3243 clever Y 扩展BSGS

    1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 小 ...

  5. [拓展Bsgs] Clever - Y

    题目链接 Clever - Y 题意 有同余方程 \(X^Y \equiv K\ (mod\ Z)\),给定\(X\),\(Z\),\(K\),求\(Y\). 解法 如题,是拓展 \(Bsgs\) 板 ...

  6. bzoj1467 Pku3243 clever Y

    1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 313  Solved: 181[Submit][Status ...

  7. 【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      ...

  8. 【EX_BSGS】BZOJ1467 Pku3243 clever Y

    1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 425  Solved: 238[Submit][Status ...

  9. 【POJ 3243】Clever Y 拓展BSGS

    调了一周,我真制杖,,, 各种初始化没有设为1,,,我当时到底在想什么??? 拓展BSGS,这是zky学长讲课的课件截屏: 是不是简单易懂.PS:聪哥说“拓展BSGS是偏题,省选不会考,信我没错”,那 ...

随机推荐

  1. CentOS在ssh下远程重装系统

    CentOS在ssh下远程重装系统 http://www.zxsdw.com/index.php/archives/913/ 国外VPS服务器一般都有控制面板,有很多种系统可自行安装,但国内有些IDC ...

  2. ASP.NET MVC 文件上传

    如果想要用HTML表单实作文件上传的功能,那么必须在输出的<form>表单标签加上一个enctype属性,且内容必须设定为multipart/form-data,要通过Html.Begin ...

  3. 006 Java并发编程wait、notify、notifyAll和Condition

    原文https://www.cnblogs.com/dolphin0520/p/3920385.html#4182690 Java并发编程:线程间协作的两种方式:wait.notify.notifyA ...

  4. caffe Python API 之Dropout

    net.pool1 = caffe.layers.Pooling(net.myconv, pool=caffe.params.Pooling.MAX, kernel_size=2, stride=2) ...

  5. 流程控制--if条件

    /* if ....else .... */ [root@localhost test1]# vim .py //ADD #!/usr/bin/python >: print 'hello py ...

  6. js前端数据加密插件

    (2014-11-14 15:37:35) 转载▼ 标签: it 分类: Web前端开发 摘要: 大部分动态网站都支持从客户端到服务器传递数据,如果传递的数据被别人截取就非常危险,尤其是一些用户名密码 ...

  7. MYSQL 索引无效和索引有效的详细介绍

    1.WHERE字句的查询条件里有不等于号(WHERE column!=...),MYSQL将无法使用索引 2.类似地,如果WHERE字句的查询条件里使用了函数(如:WHERE DAY(column)= ...

  8. Leetcode 之Longest Valid Parentheses(39)

    有一定的难度.用堆栈记录下所有左符的位置,用变量记录下孤立右符的位置. int longestValidParentheses(const string& s) { stack<int& ...

  9. elasticsearch更新license

    Elasticsearch更新license: 初次安装Marvel,有30天的使用时间,当到期后,只保存7天的数据,所以需要注册申请一个license: 注册申请地址: https://regist ...

  10. 【JBPM4】判断节点decision 方法1

    JPDL <?xml version="1.0" encoding="UTF-8"?> <process key="decision ...