Cod sursa(job #2265725)

Utilizator BungerNadejde George Bunger Data 21 octombrie 2018 16:48:28
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin  ("multiplu.in");
ofstream fout ("multiplu.out");
const int NMAX= 2000002;
queue <int> q;
int A,B,nodPrec[NMAX],cur[NMAX];
int M,mod,nr;
int cmmdc (int a,int b)
{
    int r;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }

    return a;
}
void afisare(int i)
{
    if(i!=1)
        afisare(nodPrec[i]);
    fout<<cur[i];
}
void solve ()
{
    while(1)
        {
            nr=q.front();
            q.pop();
            for(int i=0; i<2; i++)
            {
                mod=(nr*10+i)%M;

                if(!nodPrec[mod])
                {
                    nodPrec[mod]=nr;
                    cur[mod]=i;
                    q.push(mod);

                }
                if(mod==0) return;
            }

        }
}
int main()
{
    fin>>A>>B;
    M=(A*B)/cmmdc(A,B);
    nodPrec[1]=cur[1]=1;
    q.push(1);
    if(A*B==1)
        fout<<1;
    else
    {
        solve();
        afisare(0);
    }
    return 0;
}