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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;

}
Exemplo n.º 7
0
//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;
	}
}
Exemplo n.º 8
0
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;
}
Exemplo n.º 9
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;
}
Exemplo n.º 10
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;
}
Exemplo n.º 11
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;
}
Exemplo n.º 12
0
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]])