Cod sursa(job #129120)

Utilizator tErMyAndrei Panturu tErMy Data 28 ianuarie 2008 17:50:31
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
 #include<stdio.h>  
 #include<iostream.h>  
 #define LMAX 2000005  
   
 long a,b,m;  
 int cif[LMAX]; long v[LMAX],ult[LMAX]; bool gasit[LMAX];  
   
 void init()  
 {scanf("%ld %ld",&a,&b);  
  if(a>b) m=a;  
  else m=b;  
  long var=m;  
  while(m%b!=0 || m%a!=0) m+=var;  
  v[1]=1; ult[1]=0; cif[1]=1; gasit[1]=1;}  
   
 long afisare(long poz)  
 {if(poz!=0) {afisare(ult[poz]); printf("%d",cif[poz]);} }  
   
 main()  
 {freopen("multiplu.in","r",stdin);  
  freopen("multiplu.out","w",stdout);  
   
 init();  
   
  long start=1,end=1;  
   
  while(start<=end)  
  { long rest1=(v[start]*10)%m;  
    long rest2=(v[start]*10+1)%m;  
   if(rest1==0) {afisare(start); printf("0\n"); break;}  
   else  
   if(gasit[rest1]==0) {v[++end]=rest1; cif[end]=0; ult[end]=start; gasit[rest1]=1;}  
   
   if(rest2==0) {afisare(start); printf("1\n"); break;}  
   else  
   if(gasit[rest2]==0) {v[++end]=rest2; cif[end]=1; ult[end]=start; gasit[rest2]=1;}  
   start++;}  
 }