Cod sursa(job #3314693)

Utilizator Tudor_MD2011Tudor Marin Diu Tudor_MD2011 Data 10 octombrie 2025 18:38:39
Problema Factorial Scor 10
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#include <stdlib.h>
FILE *in, *out;
int v[1000], v2[1000];
int main()
{
    in = fopen("fact.in", "r");
    out = fopen("fact.out", "w");
    int nr = 1, i = 1, p, n, dif, st, dr, mij, cp;
    fscanf(in, "%d ",&p);
    v2[1] = 5;
    v[1] = 1;
    while(nr <= p){
            i++;
       nr = (nr * 5) + 1;
       v[i] = nr;
       v2[i] = v2[i - 1] * 5;
    }
    i--;
    nr = (nr - 1) / 5;
    n = v2[i];
    dif = p - nr;
    while(dif >= 5){
        st = 1;
        dr = i;
        while(st <= dr){
            mij = (st + dr) / 2;
            if(v[mij] >= dif){
                st = mij + 1;
                nr = mij;
            }
            else{
                dr = mij - 1;
            }
        }
        dif -= v[nr];
        n += v2[nr];
        i = nr;
    }
    while(dif > 0){
        n += 5;
        cp = n;
        while(cp % 5 == 0){
            cp /= 5;
            dif--;
        }
    }
    if(dif != 0){
        fprintf(out, "-1");
    }
    else{
        fprintf(out, "%d ",n);
    }
    return 0;
}