Cod sursa(job #802436)

Utilizator anca1243Popescu Anca anca1243 Data 26 octombrie 2012 18:14:47
Problema Multiplu Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream in("multiplu.in");
ofstream out("multiplu.out");
const int N=2000001;
queue<int>q;
int a[N],b[N],x,y,c;
int cmmdc(int x,int y)
{
    if(x==y)
        return x;
    if(x>y)
        cmmdc(x-y,y);
    else    cmmdc(x,y-x);
}
void bfs()
{
    int x,y;
    q.push(1);
    a[1]=1;
    b[1]=0;
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        y=x*10%c;
        if(!b[y])
        {
            q.push(y);
            a[y]=0;
            b[y]=x;
            if(y==0) return;
        }
        y=(x*10+1)%c;
        if(!b[y])
        {
            q.push(y);
            a[y]=1;
            b[y]=x;
            if(y==0) return;
        }
    }
}
void afisare(int x)
{
    if(x!=1)
        afisare(b[x]);
    out<<a[x];
}
int main()
{
    in>>x>>y;
    c=(x*y)/cmmdc(x,y);
    if(c==1){
        out<<1;
        return 0;
    }
    bfs();
    afisare(0);
    return 0;
}