http://poj.org/problem?id=1061

第一遍的写法:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
long long x,y,m,n,l,j1,j2;
long long gcd(long long a,long long b)
{
    return b==0?a:gcd(b,a%b);
}
void extend(long long a,long long b,long long &x1,long long &y1)
{
    if(b==0)
    {
        x1=1;
        y1=0;
        return ;
    }
    extend(b,a%b,x1,y1);
    long long t=x1;
    x1=y1;
    y1=t-a/b*y1;
    return ;
}
int main()
{
    while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l)!=EOF)
    {
        long long a=n-m;
        long long b=l;
        long long c=x-y;
        long long temp=gcd(a,b);
        if(c%temp!=0||n==m)
        {
            printf("Impossible\n");
            continue;
        }
        a/=temp;
        b/=temp;
        c/=temp;
        extend(a,b,j1,j2);
        long long t=-(j1*c)/b;
        j1=c*j1+t*b;
        if(j1<0)
        {
            if(b>0) j1+=b;
        }
        printf("%lld\n",j1);
    }
    return 0;
}
View Code

相关文章:

  • 2021-10-26
  • 2022-01-01
  • 2021-07-09
  • 2021-12-18
  • 2021-12-09
  • 2022-12-23
  • 2022-01-01
猜你喜欢
  • 2022-12-23
  • 2022-01-01
  • 2021-06-09
  • 2022-01-01
  • 2022-01-01
相关资源
相似解决方案