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. 【题解】HAOI2007分割矩阵

    水题盛宴啦啦啦……做起来真的极其舒服,比某些毒瘤题好太多了…… 数据范围极小 --> 状压 / 搜索 / 高维度dp:观察要求的均方差,开始考虑是不是能够换一下式子.我们用\(a_{x}\)来表 ...

  2. The 13th Zhejiang Provincial Collegiate Programming Contest - D

    The Lucky Week Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward, the headmaster of the Marja ...

  3. HDU 5670

    Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  4. [codechef MEXDIV]Mex division

    题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了... /* 设dp[i]表示前i个做划分满足条件的方案数 有一个显然的转移 ...

  5. 转:安装成功的nginx如何添加未编译安装模块

    原已经安装好的nginx,现在需要添加一个未被编译安装的模块 举例说明:安装第三方的ngx_cache_purge模块(用于清除指定URL的缓存) nginx的模块是需要重新编译nginx,而不是像a ...

  6. AQS同步组件及ReentrantLock和synchronized的区别

    AQS同步组件 CountDownLatch(只有一个线程对他进行操作): 主线程必须在启动其它线程后立即调用await()方法.这样主线程的操作就会在这个方法上阻塞,直到其它线程完成各自的任务. S ...

  7. 关于jQuery.extend

    这次来了解下jQuery的extend吧,作为菜鸟的我学艺不精,看插件时经常看到extend函数的使用,从网上看到一篇不错的介绍,特地转载过来留给自己收藏学习: ------------------- ...

  8. hdu 4506 小明系列故事——师兄帮帮忙

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4506 题目大意:找规律,判断k的t次幂前面的系数. #include <iostream> ...

  9. javascript中实例方法与类方法的区别

    在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问,不需要声明类的实例来 ...

  10. Flask应用部署

    1. 介绍 前面介绍了<Linux下Nginx使用>, 但是Nginx是一个提供静态文件访问的web服务 首先我们介绍一下Web服务器, 应用服务器和应用框架的关系 客户端: 浏览器或者a ...