Pagini recente » Cod sursa (job #2732243) | Cod sursa (job #1928563) | Cod sursa (job #1935993) | Cod sursa (job #1909610) | Cod sursa (job #2323662)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a,b,m,tata[3000005],x,poz,coada[2000005],prim,ultim;
bool viz[2000005],cifra[3000005];
int cmmdc(int a,int b)
{
int r;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void afisare(int poz)
{
if(poz!=1)
{
afisare(tata[poz]);
}
g<<cifra[poz];
}
int main()
{
f>>a>>b;
prim=ultim=1;
coada[prim]=1;
viz[1]=1;
m=a*b/cmmdc(a,b);
cifra[prim]=1;
tata[1]=-1;
coada[prim]=1;
while(viz[0]==0 && prim<=ultim)
{
x=coada[prim];
viz[x]=0;
if(viz[(x*10)%m]==0)
{
viz[(x*10)%m]=1;
ultim++;
coada[ultim]=(x*10)%m;
tata[ultim]=prim;
cifra[ultim]=0;
}
if(viz[0]==1)
{
poz=ultim;
break;
}
if(viz[(x*10+1)%m]==0)
{
viz[(x*10+1)%m]=1;
ultim++;
coada[ultim]=(x*10+1)%m;
tata[ultim]=prim;
cifra[ultim]=1;
}
if(viz[0]==1)
{
poz=ultim;
}
prim++;
}
afisare(poz);
return 0;
}