Cod sursa(job #3151838)

Utilizator andreidumitrache1709Dumitrache Andrei Bogdan andreidumitrache1709 Data 23 septembrie 2023 00:04:36
Problema Factorial Scor 100
Compilator c-32 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#define CINCI 5
int main()
{
    FILE *fin , *fout;
    int zero , put5 , cnt , st , dr , mij , zerouri;
    fin = fopen ( "fact.in" , "r" );
    fscanf ( fin , "%d" , &zero );
    fclose ( fin );
    fout = fopen ( "fact.out" , "w" );
    if ( zero == 0 )
        fprintf ( fout , "%d\n" , zero * CINCI + 1 );
    else if ( zero < CINCI )
        fprintf ( fout , "%d\n" , zero * CINCI );
    else {
        dr = zero * CINCI - 1; /// zero * 5 este nr maxim
        st = zero - 1; /// cel mai mic nr;
        zerouri = 0;
        while ( dr - st > 1 ) {
            mij = ( dr + st ) / 2;
            put5 = CINCI;
            cnt = 0;
            while ( put5 <= mij ) { /// formula lui Legendre
                cnt += mij / put5;
                put5 *= CINCI;
            }
            if ( cnt < zero )
                st = mij;
            else {
                dr = mij;
                zerouri = cnt;
            }
        }
        if ( zerouri != zero )
            dr = -1;
        fprintf ( fout , "%d\n" , dr );
    }
    fclose ( fout );
    return 0;
}