Cod sursa(job #1962343)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 11 aprilie 2017 18:25:08
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<bitset>
using namespace std;
bitset <2000000>f;
const int NMAX=2000000;
struct multiplu
{
    int c,r,t;
};
multiplu q[NMAX+5];
int main()
{
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    int A,B,M,CA,CB,r,p,u,i;
    scanf("%d%d",&A,&B);
    CA=A;
    CB=B;
    while(B)
    {
        r=A%B;
        A=B;
        B=r;
    }
    M=CA/A*CB;
    p=u=1;
    q[p].c=1;
    q[p].c=1;
    q[p].r=1;
    q[p].t=0;
    f[q[p].r]=1;
    while(p<=u)
    {
        r=(q[p].r*10+0)%M;
        if(f[r]==0)
        {
            f[r]=1;
            u++;
            q[u].c=0;
            q[u].r=r;
            q[u].t=p;
            if(r==0)
                break;
        }
        r=(q[p].r*10+1)%M;
        if(f[r]==0)
        {
            f[r]=1;
            u++;
            q[u].c=1;
            q[u].r=r;
            q[u].t=p;
            if(r==0)
                break;
        }
        ++p;
    }
    i=0;
    while(u>=1)
    {
    f[++i]=q[u].c;
    u=q[u].t;
    }
    for(i;i>=1;i--)
    if(f[i]==0)
    printf("0");
    else
    printf("1");
    return 0;

}