【洛谷P1516】青蛙的约会
题目大意:给定 \(a,b,c\),求线性同余方程 \(ax+by=c\) 的最小正整数解。
题解:首先判断方程是否有解,若 c 不能整出 a 与 b 的最大公约数,则无解。若有解,则利用扩展欧几里得算法先求出 \(ax'+by'=gcd(a,b)\) 的一组解,再根据倍数进行缩放即可得到原不定方程的一组解。求最小正整数解可以根据公式 \((x\%mod+mod)\%mod\) 得出,原因如下:C++ 负数取模为截断机制,即:不会向下取整,直接进行截断。因此,若 x 为负数,则取模之后会变成绝对值小于 mod 的最大负数,再利用加 mod % mod 即可得出正确结果。另外,对于有解的同余方程的一组通解为 \(x=x_0+{b\over d}*k\)。
代码如下
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll m,n,a,b,L,mod;
ll exgcd(ll a,ll b,ll &x,ll &y){
	if(!b)return x=1,y=0,a;
	ll d=exgcd(b,a%b,x,y),z=x;
	x=y,y=z-a/b*y;
	return d;
}
int main(){y
	ll x,y;
	scanf("%lld%lld%lld%lld%lld",&a,&b,&m,&n,&L);
	if(n>m)swap(m,n),swap(a,b);
	ll d=exgcd(m-n,L,x,y);
	if((b-a)%d)puts("Impossible");
	else{
		ll mod=L/d;
		printf("%lld\n",(x*(b-a)/d%mod+mod)%mod);
	}
	return 0;
}
【洛谷P1516】青蛙的约会的更多相关文章
- 洛谷 P1516 青蛙的约会 解题报告
		P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ... 
- 洛谷——P1516 青蛙的约会
		P1516 青蛙的约会 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ... 
- 洛谷 p1516 青蛙的约会 题解
		dalao们真是太强了,吊打我无名蒟蒻 我连题解都看不懂,在此篇题解中,我尽量用语言描述,不用公式推导(dalao喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ... 
- 洛谷P1516 青蛙的约会(扩展欧几里德)
		洛谷题目传送门 很容易想到,如果他们相遇,他们初始的位置坐标之差\(x-y\)和跳的距离\((n-m)t\)(设\(t\)为跳的次数)之差应该是模纬线长\(l\)同余的,即\((n-m)t\equiv ... 
- 洛谷P1516 青蛙的约会
		题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ... 
- 洛谷 P1516 青蛙的约会
		https://www.luogu.org/problemnew/show/P1516#sub 题意还是非常好理解的..... 假如这不是一道环形的跑道而是一条直线,你会怎样做呢? 如果是我就会列一个 ... 
- P1516 青蛙的约会和P2421 [NOI2002]荒岛野人
		洛谷 P1516 青蛙的约会 . 算是手推了一次数论题,以前做的都是看题解,虽然这题很水而且还交了5次才过... 求解方程\(x+am\equiv y+an \pmod l\)中,\(a\)的最小整数 ... 
- 【题解】P1516 青蛙的约会(Exgcd)
		洛谷P1516:https://www.luogu.org/problemnew/show/P1516 思路: 设两只青蛙跳了T步 则A的坐标为X+mT B的坐标为Y+nT 要使他们相遇 则满足: ... 
- P1516 青蛙的约会
		P1516 青蛙的约会x+mt-p1L=y+nt-p2L(m-n)t+L(p2-p1)=y-x令p=p2-p1(m-n)t+Lp=y-x然后套扩欧就完事了 #include<iostream&g ... 
- 解题报告:luogu P1516 青蛙的约会
		题目链接:P1516 青蛙的约会 考察拓欧与推式子\(qwq\). 题意翻译? 求满足 \[\begin{cases}md+x\equiv t\pmod{l}\\nd+y\equiv t\pmod{l ... 
随机推荐
- C#1到C#4使用委托的几种方式
			using System; namespace DelegateDemo { class Program { private delegate int Cacu(string str); static ... 
- mssql sqlserver 指定特定值排在表前面
			转自:http://www.maomao365.com/?p=7141 摘要: 下文讲述sql脚本编写中,将 特定值排在最前面的方法分享, 实验环境:sqlserver 2008 R2 例:将数据表中 ... 
- Java 环境部署之Idea :解决Idea 中gradle编译 war 包编码不对
			IDE进行Gradle操作,那么还需要设置IDE的参数.例如在IDEA中,需要打开File->Other Settings->Default Settings->Gradle,在Gr ... 
- windows下查看端口被占用及处理
			一.通过命令行查找端口被谁占用 1.window+R组合键,调出命令窗口 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口 3.查看被占用端口对应的PID,输入 ... 
- 周一01.3Python多版本共存&pip环境变量设置
			python多版本共存 1.分别安装Python2.7(手动添加环境变量)与Python3.6 2.分别进入Py2与Py3文件夹中,复制python.exe,重命名为python2.exe和pytho ... 
- 6.2Python数据处理篇之pandas学习系列(二)Series数据类型
			目录 目录 (一)Series的组成 (二)Series的创建 1.从标量中创建Series数据 2.从列表中创建Series数据 3.从字典中创建Series数据 4.从ndarry中创建Serie ... 
- MongoDB的常用命令和增查改删
			数据库操作 Mongodb MySQL 查询库 show databases | show dbs show databases 选中库 use databaseName use databaseNa ... 
- Linux:Day12(下) 进程、任务计划
			vmstat命令: vmstat [options] [delay [ count]] procs: r:等待运行的进程的个数: b:处于不可中断睡眠态的进程个数:(被阻塞的队列的长度): memor ... 
- python3 今日大纲 day05
			1. 上周内容回顾 1. 闭包: 内层函数对外层函数变量的使用 def outer(): a = 10 def inner(): print(a) return inner ret = outer() ... 
- spring boot拦截器WebMvcConfigurerAdapter,以及高版本的替换方案(转)
			文章转自 http://blog.51cto.com/12066352/2093750 最近项目采用spring icloud,用的spring boot版本是1.5.x的,spring boot 2 ... 
