欧拉定理【p4861】按钮
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)\)即可。
\]
其中\(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】按钮的更多相关文章
- 洛谷 - P4861 - 按钮 - 扩展大步小步算法
https://www.luogu.org/problemnew/show/P4861 把好像把一开始b==1的特判去掉就可以AC了. #include<bits/stdc++.h> us ...
- 2019.2-2019.3 TO-DO LIST
DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...
- X000001
一些相互无关联的题目的集合 都是码量不大,略有思维难度的题 做起来还是很舒适的 P6312 [PA2018]Palindrom 空间限制很小,不足以存下整个字符串,故暴力判断不可行. 考虑使用字符串哈 ...
- ExtJS 4.2 Date组件扩展:添加清除按钮
ExtJS中除了提供丰富的组件外,我们还可以扩展他的组件. 在这里,我们将在Date日期组件上添加一个[清除]按钮,用于此组件已选中值的清除. 目录 1. Date组件介绍 2. 主要代码说明 3. ...
- 关于Android避免按钮重复点击事件
最近测试人员测试我们的APP的时候,喜欢快速点击某个按钮,出现一个页面出现多次,测试人员能不能禁止这样.我自己点击了几下,确实存在这个问题,也感觉用户体验不太好.于是乎后来我搜了下加一个方法放在我们U ...
- Expression Blend创建自定义按钮
在 Expression Blend 中,我们可以在美工板上绘制形状.路径和控件,然后修改其外观和行为,从而直观地设计应用程序.Button按钮也是Expression Blend最常用的控件之一,在 ...
- 步入angularjs directive(指令)--点击按钮加入loading状态
今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...
- iOS 键盘添加完成按钮,delegate和block回调
这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...
- wordpress优化之结合prism.js为编辑器自定义按钮转化代码
原文链接 http://ymblog.net/2016/07/24/wordpress-prism/ 继昨天花了一天一夜的时间匆匆写了主题Jiameil3.0之后,心中一直在想着优化加速,体验更好,插 ...
随机推荐
- Netscaler的超高端口复用助力应对公网地址紧张
Netscaler的超高端口复用助力应对公网地址紧张 http://blog.51cto.com/caojin/1898351 经常会有人问一个IP只有65535(姑且不考虑预留端口),从Big-ip ...
- [CF895C]Square Subsets
题目大意:给一个集合$S$($1\leq S_i\leq 70$),选择一个非空子集,使它们的乘积等于某个整数的平方的方法的数量. 求方案数,若两种方法选择的元素的索引不同,则认为是不同的方法. 题解 ...
- JavaScript(二):对象、注释、事件!
对象 JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象. ...
- 【POJ 1201 Intervals】
Time Limit: 2000MSMeamory Limit: 65536K Total Submissions: 27949Accepted: 10764 Description You are ...
- Angular 监听路由变化
var app = angular.module('Mywind',['ui.router']) //Angular 监听路由变化 function run($ionicPlatform, $loca ...
- 如何设置项目encoding为utf-8
1.鼠标右键点击项目,选择[properties] 2.选择[Resource],在Text file encoding里面选择UTF-8,点击[ok] 大功告成! 木头大哥所发的文章均基于自身实践, ...
- CentOS 64位上编译 Hadoop2.6.0
由于hadoop-2.6.0.tar.gz安装包是在32位机器上编译的,64位的机器加载本地库.so文件时会出错,比如: java.lang.UnsatisfiedLinkError: org.apa ...
- NetTime
NetTime NetTime is a Simple Network Time Protocol (SNTP) client for Windows 95/98/Me/NT/2000/XP/Vist ...
- c++ fstream用法(2)
一> #include "stdafx.h" #include<iostream> #include<string> #include<fstr ...
- 计算1-1/x+1/x*x
// algo1-1.cpp 计算1-1/x+1/x*x. #include<stdio.h> #include<sys/timeb.h> void main() { time ...