Cod sursa(job #1802742)

Utilizator ipus1Stefan Enescu ipus1 Data 10 noiembrie 2016 17:03:01
Problema Multiplu Scor 30
Compilator cpp Status done
Runda laborator_10i Marime 0.91 kb
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
queue<int> q;
vector<int> v;
void afisare(int k)
    {int x,i;
    x=1;
    while(x*2<=k)
        x*=2;
    while(x)
        {if(k>=x)
            {k-=x;
            printf("1");
            }
        else
            printf("0");
        x/=2;
        }
    }
int main ()
{freopen ("multiplu.in","r",stdin);
freopen ("multiplu.out","w",stdout);
int a,b,x,r,i,l;
scanf("%d%d",&a,&b);
r=1;
x=a*b;
while(r)
    {r=a%b;
    a=b;
    b=r;
    }
x/=a;
if(x==1)
    {printf("1");
    return 0;
    }
q.push(1);
v.push_back(1);
l=1;
while(!q.empty())
    {l++;
    q.push((q.front()*10)%x);
    if((q.front()*10)%x==0)
        {afisare(l);
        return 0;
        }
    l++;
    q.push((q.front()*10+1)%x);
    if((q.front()*10+1)%x==0)
        {afisare(l);
        return 0;
        }
    q.pop();
    }
}