[POJ1601]青蛙的约会(exgcd)

题目:

我是超链接

题解:

好久以前写过的题目,但以前写的太丑了,并且我对exgcd的理解更深了一步,我决定重新写这篇blog!
其实就是让求
(mn)xyx(modL)

代码:

#include <cstdio>
#include <iostream>
#define LL long long
using namespace std;
LL gcd(LL a,LL b){if (!b) return a;else return gcd(b,a%b);}
void exgcd(LL a,LL b,LL &x,LL &y){if (!b) x=1,y=0;else exgcd(b,a%b,y,x),y-=(a/b)*x;}
int main()
{
    LL xx,yy,m,n,L,a,b,c;
    scanf("%lld%lld%lld%lld%lld",&xx,&yy,&m,&n,&L);
    if (m-n<0) {swap(xx,yy); swap(m,n);}
    LL d=gcd(m-n,L);
    if ((yy-xx)%d!=0) {printf("Impossible"); return 0;}
    c=(yy-xx)/d;
    a=(m-n)/d;b=L/d;
    LL x,y;
    exgcd(a,b,x,y);
    printf("%lld",(x*c+b)%b);
}

普及向

安利一波优秀的学姐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值