martes, 10 de abril de 2012

Project Euler 33

#include <iostream>

using namespace std;

int mcd(int a,int b)
{
    int c;
    if(b>a)
    {
        c = a;
        a = b;
        b = c;
    }
    c = a%b;
    while(c > 0)
    {
        a = b;
        b = c;
        c = a%b;
    }
    return b;
}

int main()
{
    int mcdiv;
    int de,nu;
    int resultadoden  = 1;
    int resultadonum = 1;
    for(int num = 10; num<=50; num++)
        for(int den = 10; den <= 99 ; den++)
        {
            mcdiv = mcd(num,den);
            if(num != den && mcdiv!=1 && mcdiv%10!=0)
            {
                de = den/mcdiv;
                nu = num/mcdiv;
                int dat1[2]= {num/10,num%10};
                int dat2[2]= {den/10,den%10};
                for(int i=0; i<=1; i++)
                    for(int j = 0; j<=1; j++)
                        if(dat1[i]!=0 && dat2[j]!=0 &&
                                dat1[i]%nu==0 &&
                                dat2[j]%de==0 &&
                                (dat1[i]/nu)==(dat2[j]/de) &&
                                (dat1[(i+1)%2]==dat2[(j+1)%2]))
                        {
                            cout << num<<"/"<<den<<" = "<<dat1[i]<<"/"<<dat2[j]<<endl;
                            resultadoden *= den;
                            resultadonum *= num;
                        }
            }
        }
    cout << "Resultado final = "<< resultadoden/mcd(resultadonum,resultadoden) <<endl;

    return 0;
}

No hay comentarios:

Publicar un comentario