51nod--1256 乘法逆元 (扩展欧几里得)
题目:
1256 乘法逆元
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
Input
输入2个数M, N中间用空格分隔(1 <= M < N <= 10^9)
Output
输出一个数K,满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
Input示例
2 3
Output示例
2
分析:
对于 K * M % N = 1, 其实这个式子是可以化为 K * M - T * N = 1;
这就和 a * x + b * y + c = 0 一样的, 又因题目讲明 gcd (M , N) = 1;
所以可以直接上扩展欧几里得了, 得出的 K 可能是负数, 要注意处理一下。
实现:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
void Exgcd(LL a, LL b, LL& d, LL&x, LL& y) { ///扩展欧几里得
if(b == 0) { d = a, x = 1, y = 0; }
else { Exgcd(b, a%b, d, y, x), y -= x * (a/b); }
}
LL K, N, M, D, T;
int main() {
while(cin >> M >> N) {
Exgcd(M,N,D,K,T);
if(K < 0) K = ((-K)/N + 1) * N + K;
cout << K << endl;
}
}
51nod--1256 乘法逆元 (扩展欧几里得)的更多相关文章
- 51Nod 1256 乘法逆元 扩展欧几里得
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = ...
- 51Nod 1256 乘法逆元
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1256 给出2个数M和N(M < N),且M与N互质,找 ...
- 51Nod 1256 乘法逆元 Label:exgcd
1256 乘法逆元 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K ...
- (拓展欧几里得)51NOD 1256 乘法逆元
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. 输入 输入2个数M, N中间用空 ...
- [51nod 1256] 乘法逆元 - exgcd
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Solution 用 EXGCD 求 ...
- 51Nod 1352 集合计数 扩展欧几里得
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足 ...
- 51 Nod 1256 乘法逆元(数论:拓展欧几里得)
1256 乘法逆元 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K ...
- [P1082][NOIP2012] 同余方程 (扩展欧几里得/乘法逆元)
最近想学数论 刚好今天(初赛上午)智推了一个数论题 我屁颠屁颠地去学了乘法逆元 然后水掉了P3811 和 P2613 (zcy吊打集训队!)(逃 然后才开始做这题. 乘法逆元 乘法逆元的思路大致就是a ...
- 51nod1256 乘法逆元【扩展欧几里得】
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的. Input 输入2个数M, N中间用 ...
随机推荐
- NodeJs 学习笔记(一)Wedding 项目搭建
说明:Ubuntu16.04 自带的NodeJs版本太低,安装包更新不了,只能编译安装了 一.NodeJs编译安装 下载:https://nodejs.org/en/download/ 修改目录权限: ...
- ArcGis Python脚本——批量对影像、要素类定义投影
这一段是批量定义要素类(FeatureClasses)投影的ArcPy代码: 把要处理的要素类塞进一个文件夹(工作空间,workspace),然后将代码开头的路径换成这个“文件夹”的路径,处理完后再做 ...
- vue中nextTick
vue中nextTick可以拿到更新后的DOM元素 如果在mounted下不能准确拿到DOM元素,可以使用nextTick 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue ...
- Silverlight界面设计
d:DesignHeight="300" d:DesignWidth="400"> 并不会限定Grid的大小,最终的效果,还要根据Grid的大小,Grid ...
- 【BZOJ3697】采药人的路径 点分治
[BZOJ3697]采药人的路径 Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材.采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是 ...
- JS算法练习三
JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...
- firefox 播放h5爱奇艺视频
先安装 violentmonkey 扩展(https://addons.mozilla.org/zh-CN/firefox/addon/violentmonkey/), 在安装这个脚本 https:/ ...
- 牛客寒假算法基础集训营4 F(二分+拓扑判环)
题目链接 题目的输出:对于每次提问,输出一行"Yes"表示大家都遵守了群规,反之输出"No". 那么输出的就是一连串的yes和no了,二分一下无环的最大提问位置 ...
- python判断小数示例&写入文件内容示例
#需求分析: #1.判断小数点个数是否为1 #2.按照小数点分隔,取到小数点左边和右边的值 #3.判断正小数,小数点左边为整数,小数点右边为整数 #4.判断负小数,小数点左边以负号开头,并且只有一个负 ...
- java知识点5
扩展篇 云计算 IaaS.SaaS.PaaS.虚拟化技术.openstack.Serverlsess 搜索引擎 Solr.Lucene.Nutch.Elasticsearch 权限管理 Shiro 区 ...