昨天打code+的时候发现自己已经不大会exgcd了。。赶紧复习一下QAQ

求$ax+by=gcd(a,b)$的解

  初始条件

$gcd(a, 0)=a$

$x=1,y=0$

  推导过程

$gcd(a,b)=gcd(b,a\%b)$

$ax'+by'=bx+(a-\left \lfloor \frac{a}{b} \right \rfloor *b)y$

$ax'+by'=ay+bx-\left \lfloor \frac{a}{b} \right \rfloor *by$

$ax'+by'=ay+b(x-\left \lfloor \frac{a}{b} \right \rfloor *y)$

$x'=y,y'=x-\left \lfloor \frac{a}{b} \right \rfloor *y$

  然后大概就完了

  对于求$ax+by=c$的话,先求$ax+by=gcd(a,b)$的一个解$x_0,y_0$,则$x'=x_0*c/d,y'=y_0*c/d$即为$ax+by=c$的一个解,因为$d*c/d=c$嘛,显然...注意如果不满足$gcd(a,b)|c$就无解,更相减损术可证。

  设$d=gcd(a,b)$。求出$ax+by=c$的一个整数解$x_0,y_0$后,其他整数解可以用$x_0-b/d,y_0+a/d$求得。因为显然$a(x_0-b)+b(y_0+a)=c$是满足的,但是其实最小的间隔应该要除以最大公约数,所以$a(x_0-b/d)+b(y_0+a/d)=c$也是成立的。

ll exgcd(ll a, ll b, ll &x, ll &y)
{
if(!b) return x=, y=, a;
int ans=exgcd(b, a%b, x, y);
ll t=x; x=y; y=t-a/b*y;
return ans;
}

  

  回到这题上

$x+am\equiv y+an\ (mod\ L)$

$a(m-n)+bL=y-x$

  令$a=m-n,b=L,c=y-x$,就变成$ax+by=c$的形式了。

  要求得最小正整数解,就是要求$(((x_0\% |b/d|)+|b/d|)\%|b/d|)$,然后这题就完了。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=, inf=1e9;
ll X, Y, m, n, L, a, b, c, d, x, y, p;
inline void read(ll &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
ll exgcd(ll a, ll b, ll &x, ll &y)
{
if(!b) return x=, y=, a;
int ans=exgcd(b, a%b, x, y);
ll t=x; x=y; y=t-a/b*y;
return ans;
}
int main()
{
read(X); read(Y); read(m); read(n); read(L);
a=m-n; b=L; c=Y-X; d=exgcd(a, b, x, y);
if(c%d!=) return puts("Impossible"), ;
x=x*(c/d); b/=d; p=b>?b:-b;
x=((x%p)+p)%p; x+=x?:p;
printf("%lld\n", x);
}

bzoj1477: 青蛙的约会(exgcd)的更多相关文章

  1. [BZOJ1477]青蛙的约会

    [BZOJ1477]青蛙的约会 试题描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘 ...

  2. P1516/bzoj1477 青蛙的约会

    青蛙的约会 exgcd 根据题意列出方程: 设所用时间为T,相差R圈时相遇 (x+T*m)-(y+T*n)=R*l 移项转换,得 T*(n-m)-R*l=x-y 设a=n-m,b=l,c=x-y,x_ ...

  3. BZOJ-1477 青蛙的约会 拓展欧几里德

    充权限之前做的...才来交 1477: 青蛙的约会 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 369 Solved: 233 [Submit][Sta ...

  4. BZOJ1477 青蛙的约会 扩展欧几里德

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1477 题意概括 两只青蛙,现在分别在x,y的位置,以m,n的速度在周长为L的环形跑道上面跑. 问他 ...

  5. POJ 1061 - 青蛙的约会 - [exgcd求解一元线性同余方程]

    先上干货: 定理1: 如果d = gcd(a,b),则必能找到正的或负的整数k和l,使ax + by = d. (参考exgcd:http://www.cnblogs.com/dilthey/p/68 ...

  6. p1516&poj1061&bzoj1477 青蛙的约会

    传送门(洛谷) 题目 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情 ...

  7. POJ1061 青蛙的约会 exgcd

    这个题虽然很简单,但是有一个比较坑的地方,就是gcd不一定是1,有可能是别的数.所以不能return 1,而是return a; 题干: Description 两只青蛙在网上相识了,它们聊得很开心, ...

  8. 【BZOJ1477】青蛙的约会(拓展欧几里得)

    [BZOJ1477]青蛙的约会(拓展欧几里得) 题面 题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为 ...

  9. POJ1061青蛙的约会[扩展欧几里得]

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 108911   Accepted: 21866 Descript ...

随机推荐

  1. python 深入浅出装饰器(decorator)--举的例子关于星级争霸2(starcraft2)

    其实早就想写一篇深入浅出装饰器的文章,苦于一直没有找到很好的例子描述,自己除了在写api参数检测和日志打印的时候用到以外,其他地方也没有什么重度使用所以一直没有写. 我不会讲解装饰器的理论,还有各种基 ...

  2. python之tkinter使用-文件系统遍历

    # tkinter:文件系统遍历 import tkinter as tk, os from time import sleep class DirList(object): def __init__ ...

  3. LODOP弹出对话框获取保存文件的路径

    通常一般不会让用户自己在文本框里填上路径,因为路径要输入字母字符等比较麻烦,而且用户硬盘里文件很多,也不知道要保存在哪里,LODOP可以弹出一个选择保存路径的弹窗,然后把返回选择的路径值.这样用户就可 ...

  4. r=a*(1-sinx)

    a=-2*pi:.001:2*pi; %设定角度b=(1-sin(a)); %设定对应角度的半径polar(a, b,'r') %绘图 夏目漱石“今夜月色很好” 王家卫“我已经很久没有坐过摩托车了,也 ...

  5. Windows 下vim的配置文件_vimrc

    set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...

  6. 工作中经常用到github上优秀、实用、轻量级、无依赖的插件和库

    原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博客,记录点滴. 按照格式推荐 ...

  7. BZOJ3417[Poi2013]Tales of seafaring——BFS

    题目描述 Young Bytensson loves to hang out in the port tavern, where he often listens to the sea dogs te ...

  8. spring boot 系列之五:spring boot 通过devtools进行热部署

    前面已经分享过四篇随笔: spring boot 系列之一:spring boot 入门 spring boot 系列之二:spring boot 如何修改默认端口号和contextpath spri ...

  9. HDU 6162 Ch’s gift

    Mr. Cui is working off-campus and he misses his girl friend very much. After a whole night tossing a ...

  10. $Min\_25$筛学习笔记

    \(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...