Cod sursa(job #116356)

Utilizator razvi9Jurca Razvan razvi9 Data 18 decembrie 2007 14:41:05
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#define n 2000000
int a,b,m,r[n],ul[n],p,u,i;
char viz[n],cif[n];

int euclid(int a,int b)
{if(!b)return a;
 else return euclid(b,a%b);
 return 1;}
void print_rez(int i)
{if(ul[i]==-1){printf("%c",cif[i]);return;}
 print_rez(ul[i]);
 printf("%c",cif[i]);}


void doit()
{m=a/euclid(a,b)*b;
 if(m==1) {printf("1");return;}
 p=0,u=0;
 r[0]=1;cif[0]='1';ul[0]=-1;
 for(p=0;true;p++)
 {i=(r[p]*10)%m;
  if(!viz[i])
  {r[++u]=i;
   cif[u]='0';
   viz[i]=1;
   ul[u]=p;
   if(i==0) break;}
  i=(i+1)%m;
  if(!viz[i])
  {r[++u]=i;
   cif[u]='1';
   viz[i]=1;
   ul[u]=p;
   if(i==0) break;}}
 print_rez(u);}

int main()
{freopen("multiplu.in","r",stdin);
 freopen("multiplu.out","w",stdout);
 scanf("%d %d",&a,&b);
 doit();
 fclose(stdout);
 return 0;}