题解:

https://www.luogu.org/problemnew/show/T51442

从这题上还是学到不少东西。。

以前并没有写过ex-bsgs

正好拿这个复习中国剩余定理和bsgs了(我觉得noip肯定不考这东西)

看过一篇博客说把乘法变除法避免逆元操作

然后我就这么写了 对拍一下会发现是错的

为什么呢

$ a^b=k*a^c\ (\ mod\ m) $ 并不能推导出

$ a^{b-c}=k \ (\ mod\ m) $

只有当m和a互素才成立

所以还是得ex-bsgs

至于ex-bsgs详见xxy https://www.cnblogs.com/TheRoadToTheGold/p/8478697.html

写的很详细了

另外这题还卡常数啊

传统的快速乘并不行

有一种叫做O(1)快速乘的东西

LL modmul(LL A,LL B,LL mod)
{
return (A*B-(LL)((long double)A*B/mod)*mod+mod)%mod;
}

于是我决定明天重新写一下这题。。

代码:

// luogu-judger-enable-o2
#include <bits/stdc++.h>
using namespace std;
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;++i)
#define dep(i,t,h) for (int i=t;i>=h;--i)
#define ll long long
map<ll,ll> M;
ll n,m,b;
IL ll cf(ll x,ll y)
{
ll t=(x*y-(ll)((long double)x*y/m)*m);
if (t<) return t+m; else return t;
}
ll gcd(ll x,ll y)
{
if (!y) return(x);
return gcd(y,x%y);
}
ll ksm(ll x,ll y)
{
if (!y) return();
if (y==) return(x);
ll ans=ksm(x,y/);
ans=cf(ans,ans);
if (y%==) ans=cf(ans,x);
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>b;
b=((b-n)%m+m)%m;
ll a1=((cf(,n)-)%m+m)%m;
ll tmp=;
ll ans=;
while ()
{
ll d=gcd(a1,m);
if (d==) break;
if (b%d)
{
cout<<"INF"<<endl;
exit();
}
b/=d; m/=d; ans++;
tmp=cf(tmp,a1/d);
if (tmp==b)
{
cout<<ans<<endl;
exit();
}
}
ll k=sqrt(m);
if (k*k<m) k++;
ll now=b;
rep(i,,k)
{
now=cf(now,a1);
M[now]=i;
}
now=tmp;
ll a2=ksm(a1,k);
rep(i,,k)
{
now=cf(now,a2);
if (M[now])
{
cout<<i*k-M[now]+ans<<endl;
exit();
}
}
cout<<"INF"<<endl;
return ;
}

重排DL的更多相关文章

  1. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  2. DIV+CSS中标签dl dt dd常用的用法

    转自:http://smallpig301.blog.163.com/blog/static/9986093201010262499229/ < dl>< /dl>用来创建一个 ...

  3. [CUDA] CUDA to DL

    又是一枚祖国的骚年,阅览做做笔记:http://www.cnblogs.com/neopenx/p/4643705.html 这里只是一些基础知识.帮助理解DL tool的实现. “这也是深度学习带来 ...

  4. 深度学习 - DL

    雷锋网 - 2016 | 人工智能在深度学习领域的前世今生(原文链接) Deep Learning - DL,深度学习是机器学习的一种. 深度学习最重要的作用:表示学习 深度学习实践的四个关键要素 计 ...

  5. JVM内存模型、指令重排、内存屏障概念解析

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器.运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要.否则,你很难搞清楚哪 ...

  6. 如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?

    如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); pri ...

  7. [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络

    先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...

  8. 动态加载框架DL分析

    动态加载框架DL分析 插件化开发,主要解决三个问题1.动态加载未安装的apk,dex,jar等文件2.activity生命周期的问题,还有service3.Android的资源调用的问题 简单说一下怎 ...

  9. 一篇讲Java指令重排和内存可见性的好文

    在这里: http://tech.meituan.com/java-memory-reordering.html 指令重排和内存可见性(缓存不一致)是两个不同的问题. volatile关键字太强,即阻 ...

随机推荐

  1. Python3学习笔记31-xlrd模块

    xlrd模块是用来读取excel的第三方模块,需要下载安装后才能使用.新建一个excel,随便填充一些数据用来测试下. ​ # -*- coding: utf-8 -*- import xlrd #打 ...

  2. C# string.join

    String.Join 方法 平常工作中经常用到string.join()方法,在vs 2017用的运行时(System.Runtime, Version=4.2.0.0)中,共有九个(重载)方法. ...

  3. c#基础之异常处理

    在开发过程中,经常遇到各种各样的小问题,很多是由于基础不牢固,没有经常总结导致的.遇到重复的问题可能可根据以往经验处理,但是对问题本身引发的原因进行深入的了解.工作很多年,但是c#基础像一层冰一样,可 ...

  4. Python在线聊天软件(Tkinter)

    1.python2.7下安装 apt-get install python-tk 主要功能是实现客户端与服务器端的双向通信,这个小东西用到的主要知识点: 1.Python Socket:2.Pytho ...

  5. jmeter设置全局变量

    2017年4月20日 10:07:37 星期四 情景, 从第一个请求的结果中匹配出code, 当作参数去做下次请求 以抢红包为例: 1. 创建红包, 并从返回结果中获取红包code 2. 将code设 ...

  6. ubuntu中文版man

    man默认是英文的,但ubuntu的源里也有中文版的.以下是配置方法: 1)  终端输入sudo apt-get install manpages-zh 2)  安装后修改配置文件sudo gedit ...

  7. 51nod--1265 四点共面 (计算几何基础, 点积, 叉积)

    题目: 1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4 ...

  8. Linux命令之查看文件夹、文件数量及其所占磁盘空间

    一.查看数量 # 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表 ...

  9. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  10. ios蓝牙详解

    最近这段时间在研究蓝牙,也研究了一段时间了现在在下面做个总结 1 其实蓝牙连接只要明白了整体原理,其实挺简单的  2 大部分情况下,手机作为中心管理者,而连接的设备被称为外设,外设的结构有点像一颗大树 ...