Background

Ada被关在了一个房间里。

Description

房间的铁门上有一个按钮,还有一个显示屏显示着“1”。

旁边还有一行小字:“这是一个高精度M进制计算器,每按一次按钮,屏幕上的数便会乘以K。当个位数再次变为1时,门就开了。”

由于Ada急于出去,所以你要在1s之内求出她的最小按键次数。

Input

一行,两个整数M和K。

Output

一行一个数字,表示最小按键次数。

如果无论Ada按多少次都无法让门打开,输出"Let's go Blue Jays!"(不含引号)。

这题太水了吧 emmm(竟然是个紫题??)

之前同桌出过这题,所以就切了@王小呆

很容易发现,我们需要求解的是这个东西\(K^x \equiv 1(mod\ m)\)

突然想到一个定理.--->欧拉定理:$a^{\phi(p)} \equiv 1 (mod\ p) $

这个定理有解的情况是\(gcd(a,p)=1\)

因此判断无解就是\(gcd(a,p)!=1\)了.

但是这题没有设置判断无解的分数,差评。(别问我怎么知道的。qwq

然后我们求解\(\phi(p)\)即可。

\[\phi(x)=x \times \prod_{i=1}^{r} (1-\frac{1}{p_i})
\]

其中\(p_i\)为质数

但这不一定是最小整数解,怎么办?

枚举\(\phi(p)\)的因子就好了啊.

这个具体证明挺简单的,如果大家不会我再填坑好了。

所以就不打算证明。

我们\(O(\sqrt n)\)的求出\(\phi(n)\)再\(O(\sqrt{\phi(n)})\)的枚举其因子就好了。

\(O(\sqrt n)\)求\(\phi(n)\)就不多说了,相信大家都会。其实是我懒

如果不会的话,可以去@王小呆里面找一找,应该会有。

还有,吐槽一下数据很水。

取模写成对\(\phi(n)\)取模,竟然有\(90pts\)。

代码

#include<cstdio>
#include<algorithm>
#include<iostream>
#define int long long
#define R register using namespace std; inline void in(R int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
} int n,m,ans=2147483647666LL; int gcd(R int x,R int y){return y==0 ? x:gcd(y,x%y);} inline int phi(R int x)
{
R int res=x;
for(R int i=2;i*i<=x;i++)
{
if(x%i==0)
{
res=res/i*(i-1);
while(x%i==0)x/=i;
}
}
if(x>1) res=res/x*(x-1);
return res;
} inline int ksm(R int x,R int y)
{
R int res=1;
for(;y;y>>=1,x=x*x%n)
if(y&1)res=res*x%n;
return res;
}
signed main()
{
in(n),in(m);
if(gcd(n,m)!=1)
{
puts("Let's go Blue Jays!");
return 0;
}
R int tmp=phi(n);
for(R int i=1;i*i<=tmp;i++)
{
if(tmp%i!=0)continue;
if(ksm(m,i)%n==1)
{
ans=i;
break;
}
if(ksm(m,tmp/i)%n==1)ans=min(ans,tmp/i);
}
printf("%lld",ans);
}

欧拉定理【p4861】按钮的更多相关文章

  1. 洛谷 - P4861 - 按钮 - 扩展大步小步算法

    https://www.luogu.org/problemnew/show/P4861 把好像把一开始b==1的特判去掉就可以AC了. #include<bits/stdc++.h> us ...

  2. 2019.2-2019.3 TO-DO LIST

    DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...

  3. X000001

    一些相互无关联的题目的集合 都是码量不大,略有思维难度的题 做起来还是很舒适的 P6312 [PA2018]Palindrom 空间限制很小,不足以存下整个字符串,故暴力判断不可行. 考虑使用字符串哈 ...

  4. ExtJS 4.2 Date组件扩展:添加清除按钮

    ExtJS中除了提供丰富的组件外,我们还可以扩展他的组件. 在这里,我们将在Date日期组件上添加一个[清除]按钮,用于此组件已选中值的清除. 目录 1. Date组件介绍 2. 主要代码说明 3. ...

  5. 关于Android避免按钮重复点击事件

    最近测试人员测试我们的APP的时候,喜欢快速点击某个按钮,出现一个页面出现多次,测试人员能不能禁止这样.我自己点击了几下,确实存在这个问题,也感觉用户体验不太好.于是乎后来我搜了下加一个方法放在我们U ...

  6. Expression Blend创建自定义按钮

    在 Expression Blend 中,我们可以在美工板上绘制形状.路径和控件,然后修改其外观和行为,从而直观地设计应用程序.Button按钮也是Expression Blend最常用的控件之一,在 ...

  7. 步入angularjs directive(指令)--点击按钮加入loading状态

    今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...

  8. iOS 键盘添加完成按钮,delegate和block回调

    这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...

  9. wordpress优化之结合prism.js为编辑器自定义按钮转化代码

    原文链接 http://ymblog.net/2016/07/24/wordpress-prism/ 继昨天花了一天一夜的时间匆匆写了主题Jiameil3.0之后,心中一直在想着优化加速,体验更好,插 ...

随机推荐

  1. CFS/FQ/PQ调度与WRR负载均衡

    动机 五一临近,四月也接近尾声,五一节乃小长假的最后一天.今天是最后一天工作日,竟然感冒了,半夜里翻来覆去无法安睡,加上窗外大飞机屋里小飞机(也就是蚊子)的骚扰,实在是必须起来做点有意义的事了!    ...

  2. C++——继承时的this指针

    1.this指针只在类的成员函数中使用,当类的成员函数需要用到自己的指针时就要用到this指针.但静态函数不能使用this关键字,其解释是:因为this是个引用,哪个对象调用方法就引用哪个对象. 而静 ...

  3. CentOS ninimal 安装后没有桌面-yellowcong

    昨天,安装Centos后,发现没有桌面,主要是没有安装桌面环境导致 的这个问题,我们需要做的第一步是,安装一个桌面(GNOME Desktop,命令:yum groupinstall -y " ...

  4. 怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL

    有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle. 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面. ...

  5. Java 处理 XML 的三种主流技术及介绍

    Java 处理 XML 的三种主流技术及介绍 原文地址:https://www.ibm.com/developerworks/cn/xml/dm-1208gub/ XML (eXtensible Ma ...

  6. 动态规划:数位DP

    数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数 条件P(i)一般与数的大小无关,而与 数的组成 有关 例题是一道BZOJ1833,让求出区间所有整数每个数字出现的次数 ...

  7. IntelliJ IDEA2017 + Tomcat 设置热部署

    1.点击idea中tomcat设置 2.点击deployment查看Deploy at the server startup 中tomcat每次所运行的包是 xxxx:war 还是其他,如果是xxxx ...

  8. Linux 查看文件和文件夹大小

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. ...

  9. wxpython布局管理部件wx.gridbagsizer用法示例

    text = ("This is text box")         panel = wx.Panel(self, -1)         chkAll1 = wx.CheckB ...

  10. python收集

    http://my.oschina.net/mutour/blog/?disp=2&catalog=0&sort=time&p=4 Python 不使用win32api打开任务 ...