Afişează mesaje
|
Pagini: [1]
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2014 / Răspuns: Infoarena Monthly 2014, Runda 7
|
: August 01, 2014, 13:32:12
|
Solutia mea pentru problema a doua este urmatoarea:
Mai intai facem sistemul: A = a*X + b1*Z B = c*Y + b2*Z
Aplicam algoritmul lui Euclid extins pentru ambele ecuatii si obtinem niste valori pentru a,b1,b2,c. Acum, pentru a afisa "DA" trebuie sa vedem daca b1 poate fi egal cu b2.
Ambele ecuatii au o infinitate de solutii, deci sistemul devine: A = (a + k1*Z/d1)*X + (b1 - k1*X/d1)*Z B = (c + k2*Z/d2)*Y + (b2 - k2*Y/d2)*Z, unde d1=cmmdc(X,Z), d2=cmmdc(Y,Z) si k1,k2 intregi.
Punem conditia ca b1 - k1*X/d1 = b2 - k2*Y/d2. Notand F=X/d1 si G=Y/d2 ajungem la:
b1 - k1*F = b2 - k2*G <=> <=> b1 - b2 = k1*F - k2*G
Aplicam algoritmul lui Euclid extins pe aceasta ecuatie. Daca gasim solutie cu k1,k2 intregi, atunci afisam "DA".
Facand toate calculele pe long long, mi-a intrat solutia asta de 100p (dupa concurs).
Ca tine am rezolvat-o si eu. Este necesar insa sa demonstrezi ca toate solutiile posibile pentru b1 din aX + b1Z = c sunt de forma b1 (aflat din euclid extins) + r*X/cmmdc(X,Z) cu un r ales de tine. Fie aX + bY = c cu a si b solutii. Incercam sa variem solutia: (a+a0)X + (b+b0)Y = c (trebuie sa le variem pe ambele pentru ca ecuatia sa se pastreze) => a*X + a0*X + b*Y + b0*Y = c Scadem a*X + b*Y = c => a0*X + b0*Y = 0 => a0*X = -b0*Y = r*cmmmc(X,Y) => a0 = r*cmmmc(X,Y)/X => a0 = r*X*Y/(cmmdc(X,Y)*X) => a0 = r*Y/cmmdc(X,Y) deci orice solutie pentru a este de forma a + r*Y/cmmdc(X,Y) Da, sau asta  ( http://en.wikipedia.org/wiki/B%C3%A9zout's_identity#Structure_of_solutions), dar demonstratia e binevenita.
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2014 / Răspuns: Infoarena Monthly 2014, Runda 7
|
: August 01, 2014, 13:01:02
|
Solutia mea pentru problema a doua este urmatoarea:
Mai intai facem sistemul:
A = a*X + b1*Z B = c*Y + b2*Z
Aplicam algoritmul lui Euclid extins pentru ambele ecuatii si obtinem niste valori pentru a,b1,b2,c. Acum, pentru a afisa "DA" trebuie sa vedem daca b1 poate fi egal cu b2.
Ambele ecuatii au o infinitate de solutii, deci sistemul devine:
A = (a + k1*Z/d1)*X + (b1 - k1*X/d1)*Z B = (c + k2*Z/d2)*Y + (b2 - k2*Y/d2)*Z, unde d1=cmmdc(X,Z), d2=cmmdc(Y,Z) si k1,k2 intregi.
Punem conditia ca b1 - k1*X/d1 = b2 - k2*Y/d2. Notand F=X/d1 si G=Y/d2 ajungem la:
b1 - k1*F = b2 - k2*G <=> <=> b1 - b2 = k1*F - k2*G
Aplicam algoritmul lui Euclid extins pe aceasta ecuatie. Daca gasim solutie cu k1,k2 intregi, atunci afisam "DA".
Facand toate calculele pe long long, mi-a intrat solutia asta de 100p (dupa concurs).
|
|
|
|