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
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