Cod sursa(job #1022762)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 5 noiembrie 2013 22:13:01
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <queue>
#define In "multiplu.in"
#define Out "multiplu.out"
#define Nmax 2000000
using namespace std;
queue < int > Q;
bool viz[Nmax], A[Nmax];
int Last[Nmax] ;
ofstream g(Out);
inline void Write(const int x)
{
    if(x==1)
    {
        g<<"1";
        return ;
    }
    Write(Last[x]);
    g<<A[x];
}
int main()
{
    int x , a, b, m, r, i ,j;
    ifstream f(In);
    f>>a>>b;
    x = a *b;
    f.close();
    while(b)
    {
        r = a % b;
        a = b;
        b = r;
    }
    m = x/a;
    viz[1%m] = 0;
    for(Q.push(1%m);  !viz[0] ; Q.pop())
    {
        i = Q.front();
        j = i*10%m;
        if(!viz[j])
            Q.push(j),
            Last[j] = i,
            A[j] = 0,
            viz[j] = 1;
        j = (i*10+1)%m;
        if(!viz[j])
            Last[j] = i,
            Q.push(j),
            A[j] = 1,
            viz[j] = 1;
    }
    Write(0);
    g<<"\n";
    g.close();
    return 0;
}