EXGSBS模板
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模板的更多相关文章
- Jade模板引擎让你飞
写在前面:现在jade改名成pug了 一.安装 npm install jade 二.基本使用 1.简单使用 p hello jade! 渲染后: <p>hello jade!</p ...
- ABP入门系列(2)——通过模板创建MAP版本项目
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打 ...
- CMS模板应用调研问卷
截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...
- OpenCV模板匹配算法详解
1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...
- 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- ThinkPHP 模板substr的截取字符串函数
ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...
随机推荐
- Guava 是个风火轮之基础工具 (1)
转自:http://www.jamespan.me/blog/2015/02/08/guava-basic-utilities-1/ Guava 是个风火轮之基础工具 (1) 前言 Guava 是 J ...
- Project Euler 42 Coded triangle numbers
题意:三角形数序列的第n项由公式tn = 1/2n(n+1)给出:因此前十个三角形数是: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, - 将一个单词的每个字母分别转化为其 ...
- 训练1-Y
对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串 Output 对于每个测试实 ...
- 利用Tensorflow训练自定义数据
很多正在入门或刚入门TensorFlow机器学习的同学希望能够通过自己指定图片源对模型进行训练,然后识别和分类自己指定的图片.但是,在TensorFlow官方入门教程中,并无明确给出如何把自定义数据输 ...
- 使用Word2016直接发布博客
使用Word2016直接发布博客
- Jenkins学习总结(6)——了解DevOps的前世今生
DevOps是什么?从哪里来? DevOps的概念 DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建. ...
- C#--文件操作的一些技巧
Using的特点 Using 打开什么,就自动关闭什么,using中包含的其他类是否关闭,using是不管的 XML文档读取 重点:必须是标准的xml文档,否则会出错 string xmlxx = @ ...
- Xshell 访问虚拟机中linux
.关闭linux防火墙 service iptables stop chkconfig iptables off .启动ssh服务 service sshd start
- [笔记][Java7并发编程实战手冊]3.4 等待多个并发事件的完毕CountDownLatch倒计数闭锁
[笔记][Java7并发编程实战手冊]系列文件夹 简单介绍 本文学习CountDownLatch 倒计数闭锁. 本人英文不好.靠机器翻译,然后有一段非常形象的描写叙述,让我把它叫为倒计数 用给定的计数 ...
- php生产随机数
php生产随机数 要求 生产三种随机数 1.全数字 2.全字母,大小写 3.数字和大小写字母 代码 <?php class RandString{ //这个属性表示我们随机数的长度,也就是个数 ...