#include  < stdio.h >

__int64  result;

__int64  gcd( __int64 a, __int64 b, __int64
&  x, __int64 &  y )
{
    __int64 t,ret;
    
if ! b ) {
        x
=   1 ,y =   0 ;
        
return  a;
    }

    
    ret
=  gcd( b, a %  b, x, y );
    t
=  x, x =  y, y =  t -  a /  b *  y;
    
    
return  ret;
}



bool   f( __int64 a, __int64 b, __int64 n )
{
    __int64  d, e, x, y, i;
    
    d
=  gcd( a, n, x, y );
    
if ( b %  d !=   0  )  return   false ;
    
    result
=  ( x *  (b /  d ) %  n +  n ) %  n;
    
return   true ;
}



int  main()
{
    __int64 x, y,m,n,l;
    
    
while ( scanf( " %I64d%I64d%I64d%I64d%I64d " , & x, & y, & m, & n, & l) !=  EOF )
    
{
        
if ( f( n -  m, x -  y, l ) )  printf( " %I64d\n " , result );
        
else                       printf( " Impossible\n " );
    }

    
    
return   0 ;
}

posted on 2008-10-24 23:45 Darren 阅读(795) 评论(0)  编辑 收藏 引用 所属分类: 未分类

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理