Cod sursa(job #3314833)

Utilizator Tudor_MD2011Tudor Marin Diu Tudor_MD2011 Data 11 octombrie 2025 11:58:52
Problema Factorial Scor 90
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>
FILE *in, *out;
long long v[100], v2[100];
int main()
{
    in = fopen("fact.in", "r");
    out = fopen("fact.out", "w");
    int i = 1, p, n, dif, st, dr, mij, cp = -100;
    long long nr = 1;
    fscanf(in, "%d ",&p);
    if(p == 0){
        fprintf(out, "1");
    }
    else{
    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 > 0){
        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 = dif - v[nr];
        n += v2[nr];
        cp = dif;
        i = nr;
    }
    if(dif != 0){
        fprintf(out, "-1");
    }
    else{
        fprintf(out, "%d ",n);
    }
    }
    return 0;
}