Pagini recente » Cod sursa (job #489230) | Cod sursa (job #2561872) | Cod sursa (job #1231744) | Cod sursa (job #1436425) | Cod sursa (job #868758)
Cod sursa(job #868758)
#include <iostream>
#include <fstream>
#include <queue>
#include <string>
#define mp make_pair
#define DN 2000100
using namespace std;
queue< int > q;
int prec[DN];
bool valoare[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=0;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
f>>a>>b;
cmmmc=a*b/cmmdc(a,b);
q.push(1);
valoare[1]=1;
prec[1]=-1;
// prec[0]=-1;
while(q.size())
{
int val=q.front();
q.pop();
if(val==0)
break;
if(!prec[(val*10)%cmmmc])
{
int noul_rest= (val*10)%cmmmc;
valoare[noul_rest]=0;
prec[noul_rest]= val;
q.push( noul_rest );
}
if(!prec[(val*10+1)%cmmmc])
{
int noul_rest= (val*10+1)%cmmmc;
valoare[noul_rest]=1;
prec[noul_rest]=val;
q.push( noul_rest );
}
}
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;
}