Pagini recente » Cod sursa (job #2148128) | Cod sursa (job #1005745) | Cod sursa (job #1311090) | Cod sursa (job #1511010) | Cod sursa (job #115719)
Cod sursa(job #115719)
#include <cstdio>
#define fin "multiplu.in"
#define fout "multiplu.out"
const int Nmax = 2001000;
int A,B,C;
int rest[Nmax],tat[Nmax],cif[Nmax];
int tail[Nmax],st,dr;
int gcd(int a,int b)
{
if ( !b )
return a;
else
return gcd(b,a%b);
}
void go()
{
int i,tmp,old;
old = dr;
for ( i = st ; i <= old ; ++i )
{
tmp = tail[i] * 10 % C;
if ( !rest[ tmp ] )
{
rest[ tmp ] = 1;
tat [ tmp ] = tail[i];
cif [ tmp ] = 0;
++dr;
tail[dr]=tmp;
}
tmp = ( tail[i] * 10 + 1 ) % C;
if ( !rest[ tmp ] )
{
rest[ tmp ] = 1;
tat [ tmp ] = tail[i];
cif [ tmp ] = 1;
++dr;
tail[dr]=tmp;
}
}
st = old + 1;
if ( st <= dr && !rest[0] )
go();
}
void print(int p)
{
if ( tat[p] != p )
print(tat[p]);
printf("%d",cif[p]);
}
int main()
{
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d",&A,&B);
C = A * B / gcd(A,B);
rest[1]=1;
tat[1]=1;
cif[1]=1;
tail[1]=1;
st = dr = 1;
go();
print(0);
printf("\n");
return 0;
}