int Inval(int a,int b,int n) // 求解方程a*x+b*y=n; { int e; extend_gcd(a,b); e=(__int64)X*n%b; return e<0?e+b:e; }
vector<int> residue(int p,int N,int a) { int g=primitive_root(p); long long m=discreat_log(g,a,p); vector<int> ret; if(a==0) { ret.push_back(0); return ret; } if(m==-1) { return ret; } long long A=N,B=p-1,C=m,x,y; long long d=extend_gcd(A,B,x,y); if(C%d!=0)return ret; x=x*(C/d)%B; long long delta=B/d; for(int i=0;i<d;i++) { x=((x+delta)%B+B)%B; ret.push_back((int)pow_mod(g,x,p)); } sort(ret.begin(),ret.end()); ret.erase(unique(ret.begin(),ret.end()),ret.end()); return ret; }
int extend_gcd(int a, int b) { if (b == 0) { x = 1, y = 0; return a; } int d = extend_gcd(b, a % b); int tx = x; x = y, y = tx - a / b * y; return d; }
int extend_gcd(int a, int b) { if (b == 0) { x = 1; y = 0; return a; } int e = extend_gcd(b, a % b); z = x; x = y; y = z - (a / b) * y; return e; }
int extend_gcd(int a,int b,int &x,int &y) { if(b==0) { x=1;y=0; return a; } else { int r=extend_gcd(b,a%b,y,x); y-=x*(a/b); return r; } }
void extend_gcd(int a,int b) { int X1,Y1; if(b==0) { X=1; Y=0; return; } extend_gcd(b,a%b); X1=Y; Y1=X-Y*(a/b); X=X1; Y=Y1; }
//please declare functions here. void extend_gcd(long long a,long long b) { if(b==0) { k=1; t=0; d=a; } else { extend_gcd(b,a%b); long long temp; temp=k; k=t; t=temp-(a/b)*t; } }
int main() { int a, b, d; freopen("/home/plac/problem/input.txt","r",stdin); freopen("/home/plac/problem/output1.txt","w",stdout); while (scanf("%d %d", &a, &b) != EOF) { d = extend_gcd(a, b); if (d != 1 || d != -1) { puts("sorry"); continue; } while (x < 0) { x += b, y -= a; } printf("%d %d\n", x, y); } return 0; }
int main() { freopen("input.txt","r",stdin); long long a,b; long long int x,y,m,n,l; //input your ... while(scanf("%lld %lld %lld %lld %lld",&x,&y,&m,&n,&l)!=EOF) { a=m-n; b=y-x; if(a<0) { a=-a; b=-b; } extend_gcd(a,l); if(b%d!=0) { printf("Impossible\n"); } else { k=k*b/d; t=t*b/d; l=l/d; if(k>=0) k=k%l; else k=k%l+l; if(k==0) k=l; printf("%lld\n",k); } // printf("%lld %lld %lld %lld %lld",x,y,m,n,l); } return 0; }
int main (void) { int x,y,m,n; __int64 x1,y1; int a,b,c; while(scanf("%d %d %d %d %d",&x,&y,&m,&n,&b)!=EOF) { a=m-n; c=y-x; int r=gcd(a,b); if(c%r) printf("Impossible\n"); else { extend_gcd(a/r,b/r,x1,y1); x1=(c*x1/r)%b; if(x1<0)x1+=b; printf("%I64d\n",x1); } } return 0; }
void extend_gcd(int a,int b,__int64 &x,__int64 &y) { if(b==0){x=1;y=0;return ;} extend_gcd(b,a%b,x,y); __int64 temp=x;x=y;y=temp-a/b*y; }
int x, y, z; int extend_gcd(int a, int b) { if (b == 0) { x = 1; y = 0; return a; } int e = extend_gcd(b, a % b); z = x; x = y; y = z - (a / b) * y; return e; } int g = extend_gcd(m1, m2); x = ((r2 - r1) / g * x % (m2 / g) + (m2 / g)) % (m2 / g); S = x * m1 + r1; m = m1 * m2 / g; 图论 1.Bellman_ford: Vector<int> V[MAXN], W[MAXN]; Bool bellman_ford(int n) { memset(visit, 0, sizeof(visit)); for (int k = 1; k < n; ++ k) for (int i = 0; i < n; ++ i) for (int j = 0; j < SZ(V[i]); ++ j) if (dis[i] + W[i][j] < dis[V[i][j]])