Cod sursa(job #1417775)

Utilizator figure0907Andrei Gonczi figure0907 Data 10 aprilie 2015 22:35:18
Problema Factorial Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#include <string.h>

long p, n;

void readdata()
{
    FILE *f = fopen("fact.in","rt");
    fscanf(f,"%d",&p);
    fclose(f);
}

int solve()
{
    int s=0;
    n = p*25/6.25;
    while (n%5>0) {
        n++;
    }
    int m=n;
    while (m>=5)
    {
        s+=m/5;
        m=m/5;
    }
    if (s<p)
    {
        int cnt = 0;
        while (s<p)
        {
            cnt++;
            s=0;
            m=n+5*cnt;
            while (m>=5)
            {
                s+=m/5;
                m=m/5;
            }
        }
        if (s==p) return (n+5*cnt);
    }
    if (s>p) {
        int cnt = 0;
        while (s>p)
        {
            cnt++;
            s=0;
            m=n-5*cnt;
            while (m>=5)
            {
                s+=m/5;
                m=m/5;
            }
        }
        if (s==p) return (n+5*cnt);
    }
    if (s==p) return n;
    return -1;
}

void writedata()
{
    FILE *f = fopen("fact.out","wt");
    if (p==0) n=1;
    fprintf(f,"%lu",n);
    fprintf(f,"\n");
    fclose(f);
}

int main()
{
    readdata();
    n = solve();
    writedata();

    return 0;
}