Cod sursa(job #797796)

Utilizator ildikoprecupPrecup Ildiko ildikoprecup Data 14 octombrie 2012 21:14:41
Problema Factorial Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int cati0(long numar){
    int suma = 0;
    while (numar / 5 != 0){
          suma = suma + ( numar / 5 );
          numar = numar / 5;
    }
    return suma;
}
int cati5(long numar){
    int n = 1;
    while (numar % 5 == 0){
          numar = numar / 5;
          n++;
    }
    return n;
}
int main(int argc, char *argv[])
{
    long p = 0;
    long putere = 0;
    FILE * f = fopen("fact.in", "r");
    fscanf(f, "%d", &p);
    fclose(f);
    
    printf("%d", p);
    long n = p * 5;
    if ( n == 0) n = 1;
    else
    {
        int scad0 = cati0(n) - p;
   
        while (scad0 > 0)
        {
          n = n - 5;
          scad0 = scad0 - cati5(n);        
        }
        if (scad0 < 0) n = -1;
    }
    f = fopen("fact.out", "w");
    fprintf(f, "%ld", n);
    fclose(f);
    
    return 0;
}