当前位置:网站首页>NOIP2012提高组 同余方程 题解
NOIP2012提高组 同余方程 题解
2022-08-05 21:18:00 【NOI RP++】
NOIP2012同余方程
题目描述
求关于 x x x的同余方程 a x ≡ 1 ( m o d b ) a x \equiv 1 \pmod {b} ax≡1(modb) 的最小正整数解。
输入格式
一行,包含两个正整数 a , b a,b a,b,用一个空格隔开。
输出格式
一个正整数 x 0 x_0 x0,即最小正整数解。输入数据保证一定有解。
样例 #1
样例输入 #1
3 10
样例输出 #1
7
提示
【数据范围】
对于 40%的数据, 2 ≤ b ≤ 1 , 000 2 ≤b≤ 1,000 2≤b≤1,000;
对于 60%的数据, 2 ≤ b ≤ 50 , 000 , 000 2 ≤b≤ 50,000,000 2≤b≤50,000,000;
对于 100%的数据, 2 ≤ a , b ≤ 2 , 000 , 000 , 000 2 ≤a, b≤ 2,000,000,000 2≤a,b≤2,000,000,000。
NOIP 2012 提高组 第二天 第一题
题解
很容易想到一种朴素做法,暴力枚举 x x x
能骗60分
......
cin >> a >> b;
int i;
for(i=1;;i++)
if(a*i%b==1)
break;
cout << i;
......
正解
扩展欧几里得算法
a x ≡ 1 ( m o d b ) a x \equiv 1 \pmod {b} ax≡1(modb)
可推出
a x + b y = 1 ( y 为整数 ) ax+by = 1 (y为整数) ax+by=1(y为整数)
若 a , b a,b a,b互质,则可用扩欧解此方程
当然题目保证一定有解,故无需考虑此情况
注意求的是 x x x的最小正整数解,故需
( x % b + b ) % b (x\%b+b)\%b (x%b+b)%b
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll x,y;
ll exgcd(ll a,ll b){
if(!b){
x = 1; y = 0; return a;}
ll d = exgcd(b,a%b);
ll z = x; x = y; y = z-(a/b)*y;
return d;
}
int main(){
ll a,b;
cin >> a >> b;
exgcd(a,b);
cout << (x%b+b)%b;
return 0;
}
边栏推荐
- 灵活好用的sql monitoring 脚本 part3
- PHP graduation design topic and how to write, graduation thesis reply what is the process
- MapReduce总结(未完待续)
- Introducing Inheritance Abstract Classes
- uni-app - 在纯 JS 文件中调用自定义弹框组件 / 封装全局 API 调用弹框组件(解决小程序、APP 无法使用 document.body.appendChild 插入组件节点)适配全端
- Win11鼠标动不了 键盘怎么代替鼠标操作
- 解决web项目导入到idea后,文件的蓝色小点消失了(web文件资源根路径)
- LeetCode 0623.在二叉树中增加一行:DFS / BFS
- “Beautiful Sky, Stars Shine.“
- 工业物联网 —— 新型数据库的召唤
猜你喜欢
随机推荐
数组滑动窗口问题基础
项目踩坑—跨域问题
MySQL主从复制原理和使用
day15--Using postman to upload and download files
PID 控制理论
极大似然估计和交叉熵
labelimg安装教程
链表系列① -- 移除链表元素
防火墙 端口号 出入站规则 这三者之间的联系
如何使用Solidity和Hardhat构建你自己的NFT以及NFT交易市场
【cocos2D-X】植物大战僵尸之 僵尸创建 和移动
samba的运用以及LVS服务,LVS中DR模式
测试1111
杭电多校-Planar graph-(最大生成树+图树关系)
使用ComposeDesktop开发一款桌面端多功能APK工具
如何靠3D建模月入2W+?
1.LaTeX的11个保留字符
灵活好用的sql monitoring 脚本 part3
自动化网络配置
TCP & UDP









