Cod sursa(job #1703119)

Utilizator cella.florescuCella Florescu cella.florescu Data 16 mai 2016 11:51:59
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>

using namespace std;

inline long long legendre(long long n){
  long long p5=5LL, rez=0LL;
  while(p5<=n){
    rez+=n/p5;
    p5*=5LL;
  }
  return rez;
}

int main()
{
    FILE *fin, *fout;
    long long p;
    long long pas, rez;
    fin=fopen("fact.in", "r");
    fscanf(fin, "%lld", &p);
    fclose(fin);
    for(pas=(1<<30), rez=0; pas>0; pas>>=1)
      if(legendre(rez+pas)<p)
        rez+=pas;
    fout=fopen("fact.out", "w");
    if(legendre(rez+1)==p)
      fprintf(fout, "%lld\n", rez+1);
    else
      fprintf(fout, "-1\n");
    fclose(fout);
    return 0;
}