bzoj 1477 青蛙的約會(exgcd模板)
阿新 • • 發佈:2018-11-06
exgcd裸題。
兩個人之間有一個距離,兩人有一個速度差,設這個距離為c,速度差為a。而需要的次數就是x
那麼題意就是,這樣就是exgcd的標準形式啦。
至於距離和速度差一定要記得是追及問題,如果距離為a-b,那麼速度就是b的減a的,如果為負,就取模加模再取模,變為正的
含義上就是追了一圈。
#include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #define mode 999911658 using namespace std; typedef long long ll; ll x,y,xx,yy,n,m,l; ll exgcd(ll a,ll b) { if(b==0) { x=1,y=0; return a; } ll r=exgcd(b,a%b); ll t=x; x=y; y=t-a/b*x; return r; } int main() { scanf("%lld%lld%lld%lld%lld",&xx,&yy,&m,&n,&l); ll aa=((n-m)%l+l)%l,cc=((xx-yy)%l+l)%l; //追及問題。。 ll gg=exgcd(aa,l); if(cc%gg) { printf("Impossible"); return 0; } cc/=gg;l/=gg; x=(x%l+l)%l; x=x*cc%l; printf("%lld",(x%l+l)%l); return 0; }