Pagini recente » Borderou de evaluare (job #1835062) | Borderou de evaluare (job #1594192) | Borderou de evaluare (job #1645118) | Cod sursa (job #449238) | Cod sursa (job #802436)
Cod sursa(job #802436)
#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;
}