Cod sursa(job #1092795)

Utilizator catalinutzbCraciun Catalin catalinutzb Data 27 ianuarie 2014 13:54:46
Problema Multiplu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
/// Craciun Catalin
///  Multiplu
///   PreONI 2008, clasa a X-a, Runda 2
#include <fstream>
#include <iostream>
#include <climits>

#define max(a,b) ((a>b)?(a):(b))
#define min(a,b) ((a<b)?(a):(b))

#define LMax 8

using namespace std;

ifstream f("multiplu.in");
ofstream g("multiplu.out");

long a,b;
int C[LMax];
long rez=LONG_MAX;

void gasit(int lenght)
{
    long x=0;

    for (int i=1;i<=lenght;i++)
        x=x*10+C[i];

    if (x%a==0 && x%b==0 && x<rez)
        rez=x;
}

void solve(int lenght)
{
    int k=1;
    bool ok;
    C[k]=-1;

    while (k>0)
    {
        ok=0;
        while (C[k]<1 && !ok)
        {
            C[k]++;
            if (!C[1])
                ok=0;
            else
                ok=1;
        }

        if (!ok)
            k--;
        else
            if (k==lenght)
                gasit(lenght);
            else
            {
                k++;
                C[k]=-1;
            }
    }
}

int main()
{
    f>>a>>b;
    f.close();

    for (int i=1;i<LMax;i++)
        solve(i);

    g<<rez<<'\n';
    g.close();

    return 0;
}