Cod sursa(job #1608170)

Utilizator CodrinsahCotarlan Codrin Codrinsah Data 21 februarie 2016 21:30:10
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream fi ("fact.in");
ofstream fo ("fact.out");
long long p,sol,n,stanga,dreapta,target,s,i;
int main()
{
    fi>>p;
    n=-1;
    if (p==0) n=1;
    else if (p==1) {p=0;n=0;}
    else
    {
      stanga=1;
      dreapta=1;
      for (i=1;i<=60;i++) dreapta*=2;
      while (1>0)
      {
        target=stanga+dreapta;
        target/=2;
        for (i=1;i<=30;i++)
        {
          s+=target/5;
          target/=5;
        }
        if (s==p) {n=(stanga+dreapta)/2;}
        if (s>=p) dreapta=(stanga+dreapta)/2;
        if (s<p) stanga=(stanga+dreapta)/2;
        if (stanga==dreapta) break;
        if (dreapta==stanga+1) stanga=dreapta;
        if (stanga==dreapta-1) dreapta=stanga;
        s=0;
      }
    }
    fo<<n;
    return 0;
}