EXBSGS模板

我之前把有一处b和c弄反了,有点困...然后调了半天

(exbsgs比excrt简单多了)

x的最小正整数解

原式子拆成

在bsgs中,保证a,b互质,这样求出的逆元挪过去才对

但exbsgs中并不保证,所以必须不断取gcd(a,b)保证a,c互质

n为不断求gcd的总次数

接下来式子变成了这样

由于左边肯定和c互质,所以那部分直接挪右面求逆元再更新一下答案就行了

剩下的按BSGS思想移项,得

然后每次预处理存进hash表/map,再在哈希表里找是否存在某一个值等于,找到了说明成立

 struct Hsh{
#define maxn 400000
int head[N1],to[M1],nxt[M1],val[M1],cte;
void ins(int x,int w)
{
int u=x%maxn,j,v;
for(j=head[u];j;j=nxt[j])
{
v=to[j];
if(v==x) return;
}
cte++; to[cte]=x; nxt[cte]=head[u];
head[u]=cte; val[cte]=w;
}
int find(int x)
{
int u=x%maxn,j,v;
for(j=head[u];j;j=nxt[j])
{
v=to[j];
if(v==x) return val[j];
}
return -;
}
#undef maxn
}h; int que[],tl;
int solve()
{
int g,i,sq;ll pw,ans=inf,now,tmp;
if(A%B==) return -;
A%=B; C%=B; tl=;
while()
{
g=gcd(A,B);
if(g==) break;
if(C%g!=) return -;
B/=g,C/=g; que[++tl]=A/g;
}
ll inv,invy;
for(i=;i<=tl;i++)
{
exgcd(que[i],B,inv,invy); inv=(inv%B+B)%B;
C=inv*C%B;
}
if(C==) return tl;
sq=sqrt(B);
for(pw=qpow(A,sq,B),now=,i=;(i-)*sq<B;i++)
{
now=now*pw%B;
h.ins(now,i);
}
for(now=C,i=;i<sq;i++)
{
tmp=h.find(now);
if(tmp!=-) ans=min(ans,tmp*sq-i);
now=now*A%B;
}
memset(&h,,sizeof(h));
if(ans==inf) return -;
return ans+tl;
} int main()
{
int ans;
while(scanf("%d%d%d",&A,&B,&C)&&A!=){
ans=solve();
if(ans==-) puts("No Solution");
else printf("%d\n",ans);
}
return ;
}

EXGSBS模板的更多相关文章

  1. Jade模板引擎让你飞

    写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...

  2. ABP入门系列(2)——通过模板创建MAP版本项目

    一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...

  3. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送

    微信支付之微信模板消息推送                    今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...

  6. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  7. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  8. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

随机推荐

  1. UVA-11806 Cheerleaders 计数问题 容斥定理

    题目链接:https://cn.vjudge.net/problem/UVA-11806 题意 在一个mn的矩形网格里放k个石子,问有多少方法. 每个格子只能放一个石头,每个石头都要放,且第一行.最后 ...

  2. [CodeForces]986A Fair

    大意:给一张图,每个图上有一个数,问以每个点为源点,经过的点包含k种数字的最小距离. 显然跑最短路会T,但我们注意到边权一定.某次学校考试就是类似题,可以bfs做,复杂度O(n),每种货物做一次,复杂 ...

  3. NOIP2018提高组金牌训练营——动态规划专题

    NOIP2018提高组金牌训练营——动态规划专题 https://www.51nod.com/Live/LiveDescription.html#!#liveId=19 多重背包 二进制优化转化成01 ...

  4. C#封装成DLL,并在C#中调用

    一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using Syste ...

  5. SpringBoot 对静态资源的映射规则

    一.所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源 webjars:以jar包的方式引入静态资源,如下:引入 jquery ...

  6. 2015 Multi-University Training Contest 10 hdu 5411 CRB and Puzzle

    CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  7. nyoj 803 大数问题

    #include<stdio.h> #include<string.h> #define ll long long #define N 110000 int main() { ...

  8. ASP.NET-signalR学习笔记

  9. 机房-动环-江森ODS系统

    优势: 标准的BACnet系统平台 开放的集成特性 支持Desktop and Server平台 支持多达100个NxE 支持无线应用,可以手机访问 DCIM---数据中心基础架构管理平台介绍 不同于 ...

  10. Spring使用HibernateDaoSupport操作数据

    spring提供了一个数据訪问层的类:org.springframework.orm.hibernate3.support.HibernateDaoSupport.一般是让 dao继承该类,然后在da ...