Отримання знань

дистанційна підтримка освіти школярів


Знакомые лягушки
http://acm.pku.edu.cn/JudgeOnline/problem?id=1061

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на Pascal:

Program PKU1061;
Var X,Y,M,N,L,O:Int64;
Procedure Init;
Var X1,Y1,M1,N1,L1:Longint;
Begin
Readln(X1,Y1,M1,N1,L1);
X:=X1;Y:=Y1;M:=M1;N:=N1;L:=L1;
End;
Function Gcd(A,B:Int64;Var X,Y:Int64):Int64;
Var T:Int64;
Begin
If B=0 Then Begin
Gcd:=A;
X:=1;
Y:=0;
End Else Begin
Gcd:=Gcd(B,A Mod B,X,Y);
T:=X;
X:=Y;
Y:=T-(A Div B)*Y;
End;
End;
Procedure Main;
Var A,B,G,X1,Y1:Int64;
Begin
A:=M-N;
B:=Y-X;
If A=0 Then Begin
O:=-100;
Exit;
End;
If B=0 Then Begin
O:=0;
Exit;
End;
If A < 0 Then Begin
A:=-A;
G:=M;M:=N;N:=G;
B:=-B;
G:=X;X:=Y;Y:=G;
End;
G:=Gcd(A,L,X1,Y1);
If Abs(B) Mod G <> 0 Then Begin
O:=-100;
Exit;
End;
L:=L Div G;
X1:=X1*(B Div G);
Y1:=Y1*(B Div G);
X1:=X1 Mod L;
Y1:=Y1 Mod L;
If X1 < 0 Then Begin
X1:=(-X1) Mod L;
X1:=-X1;
X1:=X1+L;
X1:=X1+L;
End;
X1:=X1 Mod L;
O:=X1;
End;
Procedure Out;
Begin
If O=-100 Then Writeln('Impossible') Else Writeln(O);
End;
Begin
Init;
Main;
Out;
End.
   Пример решения на C++: 
#include "stdio.h"
class t_elem
{
public:
__int64 d,x,y;
t_elem(__int64 i,__int64 j,__int64 k)
{
d=i;
x=j;
y=k;
}
};
__int64 x,y,m,n,l;
__int64 mod(__int64 i,__int64 j)
{
return (i%j+j)%j;
}

t_elem uelcld(__int64 i,__int64 j)
{
if(j==0)
{
return t_elem(i,1,0);
}
t_elem e1=uelcld(j,mod(i,j));
t_elem e2(e1.d,e1.y,e1.x-i/j*e1.y);
return e2;

}
void mels(__int64 a,__int64 b,__int64 c)
{
t_elem e=uelcld(a,c);
if(mod(b,e.d)!=0)
{
printf("Impossible\n");
}
else
{
printf("%I64d\n",mod(e.x*b/e.d,c/e.d));
}
}
int main()
{

while(scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l)!=EOF)
{
mels(m-n,y-x,l);
}
}

 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)