Pagini recente » Cod sursa (job #1213152) | Cod sursa (job #334497) | Cod sursa (job #1483208) | Cod sursa (job #554199) | Cod sursa (job #868752)
Cod sursa(job #868752)
#include <iostream>
#include <fstream>
#include <queue>
#include <string>
#define mp make_pair
#define DN 2000100
using namespace std;
queue<pair<int,int> > q;
int prec[DN];
bool valoare[DN],viz[DN];
vector<int> x;
int cmmdc(int a,int b)
{
int c;
while(b)
{
c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
int a,b,cmmmc,pozitie;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
f>>a>>b;
cmmmc=a*b/cmmdc(a,b);
q.push(mp(1,1));
valoare[1]=1;
prec[1]=-1;
// prec[0]=-1;
while(q.size())
{
int val=q.front().first;
int poz=q.front().second;
if(val==0)
{
pozitie=val;
break;
}
q.pop();
if(!viz[(val*10)%cmmmc])
{
prec[(val*10)%cmmmc]=val;
valoare[(val*10)%cmmmc]=0;
// valoare[++poz]=0;
// prec[poz]=poz-1;
q.push(mp( (val*10)%cmmmc , poz) );
viz[(val*10)%cmmmc]=true;
}
if(!viz[(val*10+1)%cmmmc])
{
prec[(val*10+1)%cmmmc]=val;
valoare[(val*10+1)%cmmmc]=1;
// valoare[++poz]=1;
// prec[poz]=poz-2;
q.push(mp( (val*10+1)%cmmmc , poz) );
viz[(val*10+1)%cmmmc]=true;
}
}
while(prec[pozitie]!=-1)
{
x.push_back( valoare[pozitie] );
pozitie=prec[pozitie];
}
g<<1;
for(int i=x.size()-1;i>=0;--i)
g<<x[i];
return 0;
}