Cod sursa(job #115298)

Utilizator Astrid28Ruxandra Cohal Astrid28 Data 16 decembrie 2007 12:05:33
Problema Multiplu Scor 0
Compilator c Status done
Runda preONI 2008, Runda 2, Clasele 11-12 Marime 1.2 kb
#include<stdio.h>
#include<math.h>

FILE *fin,*fout;
long a,b,p;


void citire()
{
  fin=fopen("multiplu.in","r");
  fscanf(fin,"%ld %ld",&a,&b);
  fclose(fin);
}


int verif(long x)
{
  int ok;
  ok=1;
  while(ok&&x>0)
    {
      if (ok%10!=0||ok%10!=1) ok=0;
      x/=10;
    }
  return ok;
}


int nrcf(long x)
{
  int c;
  c=0;
  while(x>0)
    {
      c++;
      x/=10;
    }
  return c;
}



double aduna(double x)
{
 int v[401],n,i;

 n=0;
 while((int)x>0)
   {
     v[++n]=(int)x%10;
     x/=10;
   }
 a=1;
 for(i=1;i<=n;i++)
   {
     v[i]=v[i]+a;
     if(v[i]==2) {a=1; v[i]=0;}
       else a=0;
   }
 if (a==1) v[++n]=1;
 x=0;
 for(i=n;i>0;i--)
   x=x*10+v[i];
 return x;
}



void calculeaza()
{
  int nrc,ok;
  double nr;

  if (verif(2*p)) fprintf(fout,"%ld\n",2*p);
    else
      {
	nrc=nrcf(2*p);
	ok=0;
	nr=pow(10,nrc);
	while(!ok)
	 {
	   if((int)nr%p==0) ok=1;
	     else
	       nr=aduna(nr);
	 }
	fprintf(fout,"%.0lf\n",nr);
      }
}




int main()
{
  citire();
  p=a*b;
  fout=fopen("multiplu.out","w");
  if (verif(p)) fprintf(fout,"%ld\n",p);
    else
       calculeaza();
  fclose(fout);
  return 0;
}