Pagini recente » Cod sursa (job #1651952) | Cod sursa (job #2823960) | Cod sursa (job #1049429) | Cod sursa (job #24736) | Cod sursa (job #292938)
Cod sursa(job #292938)
/*
25 6
125 31
625 156
3125 781
15625 3906
78125 19531
390625 97656
1953125 488281
9765625 2441406
48828125 12207031
244140625 61035156
1220703125 305175781
*/
#include <cstdlib>
#include <iostream>
#include <limits>
#include <math.h>
#include <fstream.h>
typedef unsigned long int uli;
using namespace std;
unsigned long int cp[] = {0,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125};
uli ex[] = {0,1,6,31,156,781,3906,19531,97656,488281,2441406,12207031,61035156,305175781};
/*
unsigned long int Ev(unsigned long int p)
{
if(5*p<25) return 5*p;
uli rez = 5*p;
for(uli i=1;i<=5*p;i++)
{
if(i*25<5*p)
{
uli j=1;
uli ii=i;
while(ii%5==0)
{
j++;
ii/=5;
}
rez-=5*j;
}
else return rez;
}
return rez;
}*/
int main(int argc, char *argv[])
{
ifstream fin("fact.in");
long unsigned int pp;
fin >> pp;
uli rez=0;
for(int i=13;i>=1;i--)
{
if(pp>=ex[i])
{
rez+=(pp/ex[i])*i;
pp=pp%ex[i];
}
}
ofstream fout("fact.out");
fout<<cp[rez];
fin.close();
fout.close();
return EXIT_SUCCESS;
}