码迷,mamicode.com
首页 > 其他好文 > 详细

luoguP1516 青蛙的约会

时间:2018-08-09 00:30:24      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:namespace   main   exgcd   color   nsx   pac   clu   lse   class   

求 (n-m)*tx+l*ty=y-x,tx最小的解,用exgcd就ok了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(b==0){
        x=1;y=0;
        return a;
    }
    ll ret=exgcd(b,a%b,x,y);
    ll temp=x;
    x=y;y=temp-(a/b)*y;
    return ret;
}
int main(){
    ll x,y,n,m,l,ansx,ansy;
    scanf("%lld%lld%lld%lld%lld",&x,&y,&n,&m,&l);
    ll t=exgcd(m-n,l,ansx,ansy);
    ll temp=x-y;l=abs(l/t);
    if(temp%t!=0)printf("Impossible");
    else printf("%lld",(((temp/t)*ansx)%l+l)%l);
    return 0;
}

 

luoguP1516 青蛙的约会

标签:namespace   main   exgcd   color   nsx   pac   clu   lse   class   

原文地址:https://www.cnblogs.com/Dream-Runner/p/9446433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!