Cod sursa(job #1817509)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 27 noiembrie 2016 22:48:59
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
const int M=(1<<22);
using namespace std;
ifstream f ("multiplu.in");
ofstream g ("multiplu.out");
int a,b,m,pred[M],q[M],ult[M];
int cmmdc(int a,int b)
{
    int r;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
void mul()
{
    int p=1,u=0,x,y,i;
    pred[1]=1;
    ult[1]=1;
    q[++u]=1;
    while(p<=u)
    {
        x=q[p++];
        for(i=0;i<2;++i)
        {
            y=(x*10+i)%m;
            if(!pred[y])
            {
                ult[y]=i;
                pred[y]=x;
                q[++u]=y;
            }
            if(y==0)
                return;
        }
    }
}
void car(int x)
{
    if(x!=1) car(pred[x]);
    g<<ult[x];
}
int main()
{
    f>>a>>b;
    m=a*b/cmmdc(a,b);
    mul();
    car(0);
    return 0;
}