Cod sursa(job #1208068)

Utilizator refugiatBoni Daniel Stefan refugiat Data 14 iulie 2014 16:43:28
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>
#include<stdlib.h>
#include<algorithm>
#include<fstream>
#include<iostream>
using namespace std;
int main()
{

    FILE* si=fopen("fact.in","r");
    ofstream so;
    so.open("fact.out");
    int p;
    fscanf(si,"%i",&p);
    if(p==0)
        so<<1;
    else
    {

        int s=0, put[10000];
        put[0]=1;
        int i=0;
        while(s<p)
        {
            s=s+put[i];
            put[i+1]=put[i]*5;
            ++i;
        }
        s=s-put[i-1];
        int min=put[i-1],max=put[i],c,j;
        while(1)
        {
            c=(min+max)/2;
            s=0;
            for(j=1; j<i; ++j)
            {
                s=s+c/put[j];
            }
            if(p>s)
                min=c+1;
            else if(p<s)
                max=c-1;
            else
                break;
        }
        so<<(c/5)*5;
    }
}