博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回档|NOIP2012 同余方程
阅读量:7005 次
发布时间:2019-06-28

本文共 969 字,大约阅读时间需要 3 分钟。

题目描述 Description

求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入输出格式 Input/output
输入格式:
输入只有一行,包含两个正整数 a, b,用一个空格隔开。
输出格式:
输出只有一行,包含一个正整数 x0,即最小正整数解。输入数据保证一定有解。
输入:3 7 

输出:10
题解:这道题我们先要看懂题意。题目的意思就是ax mod b=1,也就是ax-kb=1。考虑扩展的欧几里得定理。显然y可以是一个负值,我们的目的就是求一个最小的正整数x,让ax比b的某个整数倍大1。
题目意思即:ax=1+by,也即ax-by=1。
代码:
#include"iostream"#include"cstdio" #include"cstdlib" #include"cstring" #include"algorithm"using namespace std; long long a,b,x,y; long long extended_gcd(long long  a,long long b,long long &x,long long &y) {     if (!b) { x=1; y=0; return a; }     else    {              long long ans=extended_gcd(b,a%b,x,y);              long long t=x; x=y; y=t-(a/b)*y;             return ans;     } } int main() {     cin >> a >> b;     long long ans = extended_gcd(a, b, x, y);           x=x%b;     while (x<0) x+=b;     //我们求出的x是a的整数倍,这个整数倍可以是负值。但要求是最小整数倍    //所以我们将x加上b,因为加上之后还可以满足要求,即ax mod b=1。    cout << x << endl;       return 0; }

 

转载于:https://www.cnblogs.com/Shymuel/p/4393571.html

你可能感兴趣的文章
sprintf和snprintf的正确使用
查看>>
Smarty前端模板引擎 - 我看过的PHP开源框架
查看>>
iOS--音乐播放器之DOUAudioStreamer
查看>>
三大NoSQL数据库HBase、Cassandra和MongoDB大比拼
查看>>
gcc编译选项
查看>>
mybatis_初始化过程源码解析
查看>>
数据库CRUD中的中文编码问题
查看>>
Redis 笔记系列(六)——redis键相关命令笔记
查看>>
Spring事务配置的五种方式
查看>>
kubernetes客户端授权
查看>>
静态路由的配置命令(拓扑图)
查看>>
Git - git push origin master 报错的解决方法
查看>>
Apache Shiro 使用 RequiresPermissions with Spring...
查看>>
白话深度神经网络
查看>>
CXF创建webservice客户端和服务端
查看>>
flask自定义路由/route,正则表达式
查看>>
设置包含0的矩阵 Set Matrix Zeroes
查看>>
哥见过最长的sql语句
查看>>
MySQL性能分析及explain的使用
查看>>
Hexo for Ubuntu
查看>>