Pagini recente » Borderou de evaluare (job #1757214) | Borderou de evaluare (job #1584205) | Borderou de evaluare (job #2578564) | Borderou de evaluare (job #1528256) | Cod sursa (job #802431)
Cod sursa(job #802431)
#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!=0)
{
x=q.front();
q.pop();
y=x*10%c;
if(!b[y])
{
q.push(y);
a[y]=0;
b[y]=x;
}
y=(x*10+1)%c;
if(!b[y])
{
q.push(y);
a[y]=1;
b[y]=x;
}
}
}
void afisare(int x)
{
if(x!=1)
afisare(b[x]);
out<<a[x];
}
int main()
{
in>>x>>y;
c=(x*y)/cmmdc(x,y);
bfs();
afisare(0);
return 0;
}