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. 《代码敲不队》第八次团队作业:Alpha冲刺 第二天

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 团队项目github仓库地址链接 GitH ...

  2. Zepto.js实现fadeIn,fadeOut功能

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. Zepto的设计目的是提供 jQuery 的 ...

  3. HDU6010 Daylight Saving Time

    /* HDU6010 Daylight Saving Time http://acm.hdu.edu.cn/showproblem.php?pid=6010 模拟 题意:算当前时间是否是夏令时 */ ...

  4. poj 2914&&hdu 3002 全局最小割Stoer-Wagner算法模板

    #include<stdio.h> #include<string.h> #include<iostream> #define inf 0x3fffffff #de ...

  5. “王者对战”之 MySQL 8 vs PostgreSQL 10

    既然 MySQL 8 和 PostgreSQL 10 已经发布了,现在是时候回顾一下这两大开源关系型数据库是如何彼此竞争的. 在这些版本之前,人们普遍认为,Postgres 在功能集表现更出色,也因其 ...

  6. POJ 2184

    简单的01背包,把S看体积,把F看价值,把它们变正数处理就可以了.在处理负数时,因为减一个负数相当于加一个,所以要从前往后. #include <iostream> #include &l ...

  7. linux 下password加密程序(能够用于替换shadow文件里的用户password)

    源代码例如以下: #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]){ if(arg ...

  8. esql开发总结

    1 定义或者声明方法 int method(char *arg1,char* arg2...);   实现方法 int method(char *arg1,char* arg2...)     EXE ...

  9. 【解决】run-as: Package &#39;&#39; is unknown

    问题: [2014-07-30 20:20:25 - nativeSensorStl] gdbserver output: [2014-07-30 20:20:25 - nativeSensorStl ...

  10. 《学习opencv》笔记——基本数据结构,CvMat,矩阵訪问

        老板让让做一个东东.输入端要用到opencv顺便就来学习一下.买了本书<学习opencv>翻来一看,opencv1.0,去官网上一看.opencv2.49,瞬间有种蛋碎的赶脚.看着 ...