14.01.2013 Views

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Explicaciones a <strong>los</strong> <strong>problemas</strong> South American Regionals 2008 50<br />

• si es mayor o igual a cero, se verifica si también es solución <strong>de</strong> θ.<br />

Si con nuestra solución hacemos <strong>de</strong> r1 == 0 (y por consiguiente r2 == 0), entonces po<strong>de</strong>mos<br />

<strong>de</strong>cir que es solución sin necesidad <strong>de</strong> comprobarla en θ (por 2).<br />

Para encontrar <strong>los</strong> resultados en θ, po<strong>de</strong>mos sumarle o restarle múltip<strong>los</strong> <strong>de</strong> 360 para hacer que<br />

la solución sea positiva.<br />

Para verificar nuestra posible solución en θ se <strong>de</strong>be cumplir que una vez que hayamos remplazado<br />

t con nuestra solución: (θ1 − θ2)%(360 ∗ <strong>de</strong>nominador) == 0<br />

Finalmente si es que tenemos alguna solución, dividimos el numerador y el <strong>de</strong>nominador entre<br />

el máximo común divisor e imprimimos el menor en caso <strong>de</strong> que tengamos dos soluciones.<br />

Programa C que soluciona el problema<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#<strong>de</strong>fine INFINITO 99999<br />

using namespace std;<br />

long numerador,<strong>de</strong>nominador;//posible solucion<br />

long a1,b1,c1,d1,a2,b2,c2,d2;//datos <strong>de</strong> entrada<br />

long GCD(int a,int b){//maximo comun divisor<br />

if(b==0)return a;<br />

else return GCD(b,a%b);<br />

}<br />

void reducir(){//hace que la solucion sea una fraccion irreducible<br />

long gcd=GCD(numerador,<strong>de</strong>nominador);<br />

numerador/=gcd;<strong>de</strong>nominador/=gcd;<br />

}<br />

bool busca_solucion_theta(){ //en el caso <strong>de</strong> que la solucion se encuentre en theta<br />

if(d1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!