Codevs 1200 同余方程 2012年NOIP全国联赛提高组
1200 同余方程 2012年NOIP全国联赛提高组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题目描述 Description
求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入描述 Input Description
输入只有一行,包含两个正整数 a, b,用 一个 空格隔开。
输出描述 Output Description
输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解。
样例输入 Sample Input
3 10
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
【数据范围】
对于 40% 的数据, 2 ≤b≤ 1,000 ;
对于 60% 的数据, 2 ≤b≤ 50,000,000
对于 100% 的数据, 2 ≤a, b≤ 2,000,000,000
分类标签 Tags
欧几里德定理 数论 大陆地区 NOIP全国联赛提高组 2012年
/*
求关于x的模线性方程
ax≡1(mod b)的最小正整数解.
我们可以转化求不定方程ax+by=1的根来求.
若方程有整数解 则gcd(a,b)=1(即 1|gcd(a,b)).
求出一组解(x0,y0).
然后特殊地此题gcd(a,b)=1.
so x+b/gcd(a,b)等价于x+b.
又因为是mod b的剩余系中.
so ans=(x+b)%b.
观察此式 可知x是a关于mod y剩余系下的逆元.
若b为质数 则由费马小定理
a^(p-1)=1,可知a^(p-2)为逆元.
*/
#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
LL x,y;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
void ex_gcd(LL a,LL b,LL &x,LL &y)
{
if(!b) {x=1,y=0;return ;}
else ex_gcd(b,a%b,y,x),y-=(a/b)*x;
}
int main()
{
LL a,b;
a=read(),b=read();
ex_gcd(a,b,x,y);
cout<<(x+b)%b;
return 0;
}
/*
看到网上有这种做法.
挺巧妙的.
由欧拉函数性质:a^phi(b)%b=1.
so a*a^(phi(b)-1)%b=1.
so 该方程的解为x=a^(phi(b)-1).
so 在mod b剩余系下
最小正整数解为x=a^(phi(b)-1)%b.
然后枚举因子求phi(b),快速幂求a^(phi(b)-1)%b.
特殊地若b为质数
由欧拉函数性质phi(b)=b-1.
即求a^(b-2)%b.(和费马小定理的结论一样....)
*/
#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
LL x,y,s,ans,a,b;
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
void eu()
{
LL n=b;
ans=n;
for(int i=2;i*i<=n;i++)
{
if(!(n%i))
{
while(!(n%i)) n/=i;
ans=ans/i*(i-1);
}
}
if(n>1) ans=ans/n*(n-1);
}
LL mi(LL a,LL p)
{
LL tot=1;
while(p)
{
if(p&1) tot=tot*a%b;
a=a*a%b;
p>>=1;
}
return tot;
}
int main()
{
a=read(),b=read();
eu();
ans=mi(a,ans-1)%b;
cout<<ans;
return 0;
}
Codevs 1200 同余方程 2012年NOIP全国联赛提高组的更多相关文章
- codevs 1200 同余方程 2012年NOIP全国联赛提高组 x
/*我在提交的时候发现了一个特别好玩的事,有兴趣的话,可以自己尝试一下:把下面说的地方的y=0改为y=1在codevs里面能够ac,这……数据水?到一定境界……厉害了,吓得我还以为自己对了,结果一讲才 ...
- 1200 同余方程 2012年NOIP全国联赛提高组
题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空 ...
- 同余方程 2012年NOIP全国联赛提高组
时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Descriptio ...
- Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
1218 疫情控制 2012年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description H 国有 n 个城市,这 ...
- Codevs 1217 借教室 2012年NOIP全国联赛提高组
1217 借教室 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在大学期间,经常需要租借教 ...
- Codevs 1198 国王游戏 2012年NOIP全国联赛提高组
1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...
- 开车旅行 2012年NOIP全国联赛提高组(倍增+set)
开车旅行 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小A 和小B决定利用 ...
- Codevs 3289 花匠 2013年NOIP全国联赛提高组
3289 花匠 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 花匠栋栋种了一排花,每株花都 ...
- Codevs 1171 潜伏者 2009年NOIP全国联赛提高组
1171 潜伏者 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description [问题描述] R 国和S 国正陷 ...
随机推荐
- 搭建kafka集群
1:确认zookeeper集群安装正确,防火墙关闭 2:下载kafka安装文件 cd /usr/local/mydown wget http://mirror.bit.edu.cn/apache/ka ...
- HTML——form表单中常用标签 form input (text hidden password radio checkbox reset submit ) select(option)总结
<form action="" method="get"> <!-- placeholder="请输入文本" 显示提示 r ...
- 【原创】大数据基础之Mongodb(2)常用查询命令
1 下载 https://www.mongodb.com/download-center/community 比如: https://fastdl.mongodb.org/linux/mongodb- ...
- 异常-Throwable的几个常见方法
package cn.itcast_04; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- MFC六大核心机制
MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为 ...
- O064、NFS Volume Provider(Part III)
参考https://www.cnblogs.com/CloudMan6/p/5702199.html 今天我们将前一小节中创建的 nfs-vol-xx attach 到Instance c1 上, ...
- ztree树id、pid转成children格式的(待整理完整)
山铝菜单 因为菜单选用了bootstrap treeview ,而格式需要是children类似的格式 var nodes = [ {name: "父节点1", children: ...
- 1 .net 用事物提交执行存储过程
public static void delModelReturn(string performanceId,DateTime? effectiveDate=null) { using (SqlCon ...
- JVM学习笔记(一):Java虚拟机和虚拟机内存区域
为什么Java程序需要运行在虚拟机上 因为Java在设计之初的跨平台特性,我们知道Java程序是运行在Java虚拟机上的.如果你要问为什么Java程序要运行在虚拟机上,我可以反问你几个问题. 为什么买 ...
- DHCP显示
两种PXE启动芯片 开机显示:Inter® Boot Agent GE V1.2.45或者Intel UNDI PXE2.0 (Build 082):其中UNDI是Universal Network ...