Cod sursa(job #1297892)

Utilizator CatlinvCatalin Sbera Catlinv Data 22 decembrie 2014 13:42:22
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

int Factorial(int n){
    int x = 5;
    int rezultat = 0;
    while(x <= n){
        rezultat += n / x;
        x *=5;
    }
    return rezultat;
}

int main()
{
    ifstream f("factorial.in");
    ofstream g("factorial.out");
    int p;
    f>>p;
    if(p == 0){
        g<<1;
        return 0;
    }
    int left = 0;
    int right = 1<<12;
    int ok = 0;
    int middle;
    while(left < right){
        middle = (left + right) >> 1;
        if(Factorial(middle) < p){
            left = middle + 1;
        }
        if(Factorial(middle) > p){
            right = middle - 1;
        }
        if(p == Factorial(middle)){
            ok = 1;
            break;
        }
    }
    if(middle%10==1 || middle%10==2 || middle%10==3 || middle%10==4 )
        middle=middle/10*10;
    if(middle%10==6 || middle%10==7 || middle%10==8 || middle%10==9 )
        middle=middle/10*10+5;
    g<<middle;
    return 0;
}