Cod sursa(job #313583)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 9 mai 2009 13:22:35
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

unsigned long v[14][3];

unsigned long BS2(unsigned long x)
{
    int lo, hi, mid, last = 0;

    for (lo = 1, hi = 12; lo <= hi; )
    {
    mid = lo + (hi-lo) / 2;
    if (v[mid][2] <= x) last = mid, lo = mid+1;
    else hi = mid-1;
    }
    return last;
}

int main()
{
 freopen("fact.in","r",stdin);
 freopen("fact.out","w",stdout);
 unsigned long p,n=0,i,x;
 v[1][1]=25;
 v[1][2]=6;
 for (i=2;i<13;i++) {v[i][1]=v[i-1][1]*5;v[i][2]=v[i-1][1]+v[i-1][2];};
 scanf("%ld",&p);

 do
 {
  x=BS2(p);
  n=n+v[x][1];
  p=p-v[x][2];
 }
 while (p>5);

 if (p==5) n=-1;
 else n=n+p;


 printf("%ld",n);
 return 0;
}