Pagini recente » Cod sursa (job #669655) | Cod sursa (job #1880103) | Cod sursa (job #41061) | Cod sursa (job #1603253) | Cod sursa (job #2323650)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a,b,m,tata[2000005],nr,x,nrc,poz;
deque <int> coada;
bool viz[2000005],cifra[2000005];
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;
coada.push_back(1);
viz[1]=1;
m=a*b/cmmdc(a,b);
nr=1;
cifra[nr]=1;
tata[1]=-1;
while(viz[0]==0)
{
x=coada.front();
coada.pop_front();
viz[x]=0;
nrc++;
if(viz[(x*10)%m]==0)
{
viz[(x*10)%m]=1;
coada.push_back((x*10)%m);
nr++;
tata[nr]=nrc;
cifra[nr]=0;
}
if(viz[0]==1)
{
poz=nr;
break;
}
if(viz[(x*10+1)%m]==0)
{
viz[(x*10+1)%m]=1;
coada.push_back((x*10+1)%m);
nr++;
tata[nr]=nrc;
cifra[nr]=1;
}
if(viz[0]==1)
{
poz=nr;
}
}
afisare(poz);
return 0;
}