Cod sursa(job #349970)

Utilizator APOCALYPTODragos APOCALYPTO Data 21 septembrie 2009 22:40:59
Problema Multiplu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream.h>
#include<iostream.h>
long cif[2000],up[2000];
ofstream fout("multiplu.out");
long cmmdc(long a,long b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void afara(int k)
{if(k!=1)
      afara(up[k]);
     fout<<cif[k];
}
int main()
{long a,m,b,r1,r2,r[2000],q[2000],k,dimq,c;
    ifstream f("multiplu.in");
f>>a>>b;
c=cmmdc(a,b);
m=(a*b)/c;
r[1]=1;
q[1]=1;
dimq=1;
cif[1]=1;
k=1;
while(k<=m)
{
 r1=(q[k]*10)%m;
 r2=(q[k]*10+1)%m;
 if(r[r1]==0)
   {r[r1]=r1;
   dimq++;
   q[dimq]=q[k]*10;
   cif[r1]=0;
   up[r1]=q[k]%m;
   }
 if(r[r2]==0)
   {r[r2]=r2;
   dimq++;
   q[dimq]=q[k]*10+1;
   cif[r2]=1;
   up[r2]=q[k]%m;
   }
k++;
if(r1==0||r2==0)
   break;
}
f.close();
afara(0);
fout.close();
return 0;
}