Cod sursa(job #1092781)

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

#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;
bool gasitRez=0;
int C[LMax];
long rez;

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)
        g<<x<<'\n', gasitRez=1;
}

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 (!gasitRez)
            if (k==lenght)
                gasit(lenght);
            else
            {
                k++;
                C[k]=-1;
            }
    }
}

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

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

    g.close();

    return 0;
}