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;
}
转载于:https://www.cnblogs.com/nancheng58/p/10068157.html
Codevs 1200 同余方程 2012年NOIP全国联赛提高组相关推荐
- 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
1315 摆花2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明的花店新开张,为 ...
- 1313 质因数分解 2012年NOIP全国联赛普及组
1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同 ...
- 1316 文化之旅 2012年NOIP全国联赛普及组
1316 文化之旅 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一 ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- 过河 2005年NOIP全国联赛提高组(离散化+dp)
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一 ...
- 1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...
- 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)
聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员, ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心
Codevs 1066 引水入城 题目上没有给出样例二,只给出了样例二的图,真是奇怪(丧心病狂). Input2: 3 6 8 4 5 6 4 4 7 3 4 3 3 3 3 2 2 1 1 2 Ou ...
- codevs 1043 方格取数 2000年NOIP全国联赛提高组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...
- 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
/* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...
最新文章
- 用户切换命令:su 与 sudo
- 数字信号处理基础----FM的调制与解调
- 安师大计算机与信息学院导师,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
- 设置VS2010中使用IntelliTrace来进行调试
- Android Studio Linking an external C++ project 时候 报Invalid file name. Expected: CMakeLists.txt
- Spring Cloud Alibaba Nacos Confifig是什么
- kettle数据库操作OPTION SQL_SELECT_LIMIT=DEFAULT问题解决
- 构建之法第四章--两人合作
- .NET笔试题集(二)
- Oracle 学习笔记二 Create table
- 协同过滤介绍和简单推荐系统的实现
- python widget_python 图形界面
- 虚拟 IO 服务器(VIOS)和 IBM i
- androidstudio身高预测app
- cairo填充_用 cairo 实现跨平台图形
- 微服务架构深度解析与最佳实践
- linux查看进程被kill原因,定位Linux下定位进程被谁KILL
- java.io.IOException: java.io.FileNotFoundException: C:\Users\26904\AppData 找不到指定的路径,自动跑到C盘里找,太离谱了。
- 如何重启MySQL服务,正确重启mysql
- 你看到的都是招数,不是内功
热门文章
- codesys中打开linux端的串口_机械臂和移动机器人,CoDeSys介绍
- SpringBoot Starter自动装配的原理
- Mac设置VMARE FUSION虚拟机网卡
- Access to XMLHttpRequest at ‘url‘ from origin ‘null‘ has been blocked by CORS policy: Request header
- exists sql用法_《SQL进阶教程》笔记(3)
- SpringMVC之安全性(一)
- 【渝粤教育】国家开放大学2018年秋季 1121t健康教育与健康促进 参考试题
- 21秋期末考试成本会计10168k2
- 【渝粤教育】国家开放大学2019年春季 2718动物生理基础 参考试题
- 【sklearn第二十八讲】验证曲线