Cod sursa(job #25863)

Utilizator horia.jurcutHoria Jurcut horia.jurcut Data 4 martie 2007 15:28:38
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>

long p,a,b,c,d;

void citire()
{
 FILE * in = fopen("fact.in","r");
 fscanf(in,"%ld",&p);
 fclose(in);
}

int zero()
{
 int k=0;
 long x = p;
 while(x>0)
  {
   if(x%10==0) ++k;
   x/=10;
  }
return k;
}

void interval()
{
 int i,k=zero();
 long nr = 2;

 for(i=1;i<=k;i++)
   {
    nr *= 10;
   }
 if(nr<p)
   {
    d = nr*10;
    c = nr/10;
    b = nr*10*5;
    a = nr/10*5;
   }
 else
   {
    d = nr;
    c = nr/10;
    b = nr*5;
    a = nr/10*5;
   }
}

long numar()
{
 int ok=0;
 long nrfinal = 0;
 long zerop = 0;
 interval();
 if(p>d/2)
   {
    a=b/2+5;
    ok=1;
   }
 else
   {
    b=b/2-5;
    ok=2;
   }
 nrfinal = b;
 if(ok==1)
    {
     zerop = d - p;
     nrfinal = b - (zerop*5);
    }
 if(ok==2)
  {
   zerop = d/2 - p;
   nrfinal = b - (zerop*5);
  }
return nrfinal;
}

void tipar()
{
 FILE * out = fopen("fact.out","w");
 //fprintf(out,"[%ld , %ld]\n",a,b);
 //fprintf(out,"[%ld , %ld]\n",c,d);
 if(p==0) fprintf(out,"1");
 else fprintf(out,"%ld",numar());
 fclose(out);
}

int main()
{
 citire();
 numar();
 tipar();
 return 0;
}