【数论】【ex-BSGS】poj3243 Clever Y
用于求解高次同余方程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的更多相关文章
- poj3243 Clever Y[扩展BSGS]
Clever Y Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8666 Accepted: 2155 Descript ...
- luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法
BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...
- 【POJ3243】【拓展BSGS】Clever Y
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- 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\) 板 ...
- bzoj1467 Pku3243 clever Y
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 313 Solved: 181[Submit][Status ...
- 【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 ...
- 【EX_BSGS】BZOJ1467 Pku3243 clever Y
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 425 Solved: 238[Submit][Status ...
- 【POJ 3243】Clever Y 拓展BSGS
调了一周,我真制杖,,, 各种初始化没有设为1,,,我当时到底在想什么??? 拓展BSGS,这是zky学长讲课的课件截屏: 是不是简单易懂.PS:聪哥说“拓展BSGS是偏题,省选不会考,信我没错”,那 ...
随机推荐
- 科猫网项目总结(基于SSM框架)
1.配置文件的添加 SSM整合需要web.xml配置文件,springmvc的配置文件,spring和mybatis整合的配置文件. 1.web.xml文件的配置 1.在WEB-INF下新建web.x ...
- python基础===self的理解
self是类的实例 self有点类似java中的this,无实际意义.但是约定俗成的都是用self表示类的实例 class A: def func(self): print(self) #指向的是类的 ...
- $scope作用及模块化解决全局问题
$scope对象就是一个普通的JavaScript对象,我们可以在其上随意修改或添加属性.$scope对象在AngularJS中充当数据模型,但与传统的数据模型不一样,$scope并不负责处理和操作数 ...
- node.js2
同步是指:同步阻塞操作,异步是指:异步非阻塞操作. 第一部分:fs模块 1.引入fs模块 require('fs'); 2.写文件 01.异步写:writeFile fs.writeFile(path ...
- JS中类型检测方式
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a' ...
- ORACLE导入Excel数据
首先建好一个和Excel表字段对应字段的表,然后 select t.* from 表名 t for update; 点击这个锁子,打开它 粘贴,然后 再提交事务即可
- HEER-Easing Embedding Learning by Comprehensive Transcription of Heterogeneous Information Networks
来源:KDD 2018 原文:HEER code:https://github.com/GentleZhu/HEER 注: 若有错误,欢迎指正 这篇KDD’18的文章,没有按照常规的方法将所有的n ...
- Asp.net 模板下载和导入到DataTable中
HTML页面: <tr> <td colspan=" style="text-align: left; border: 1px;"> <as ...
- centos7.5安装seafile
1.配置yum源 [root@localhost yum.repos.d]# uname -r3.10.0-693.el7.x86_64 [root@localhost yum.repos.d]# c ...
- Java之static理解
说到关键字static,首先想到了常量,静态变量,本文我总结了下static的用法. 1.静态变量 可以被赋值,便于类访问. 2.静态方法 静态方法与静态变量都可以被private.public修饰. ...