Cod sursa(job #2780078)
Utilizator | Data | 5 octombrie 2021 22:07:16 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 3.37 kb |
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int main()
{
long long x,s=0,j,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0,s9=0,s10=0,s11=0,s12=0,s13=0;
f>>x;
if(x==0)
g<<1;
else
{
s=x*5-5*((x-5)/5);
for(j=5;j<=500000000;j*=5)
s1+=s/j;
for(j=5;j<=500000000;j*=5)
s2+=(s-5)/j;
for(j=5;j<=500000000;j*=5)
s3+=(s-10)/j;
for(j=5;j<=500000000;j*=5)
s4+=(s-15)/j;
for(j=5;j<=500000000;j*=5)
s5+=(s-20)/j;
for(j=5;j<=500000000;j*=5)
s6+=(s+5)/j;
for(j=5;j<=500000000;j*=5)
s7+=(s+10)/j;
for(j=5;j<=500000000;j*=5)
s8+=(s+15)/j;
for(j=5;j<=500000000;j*=5)
s9+=(s+20)/j;
for(j=5;j<=500000000;j*=5)
s10+=(s-25)/j;
for(j=5;j<=500000000;j*=5)
s11+=(s-30)/j;
for(j=5;j<=500000000;j*=5)
s12+=(s+25)/j;
for(j=5;j<=500000000;j*=5)
s13+=(s+30)/j;
if(x==s1||x==s2||x==s3||x==s4||x==s5||x==s6||x==s7||x==s8||x==s9||x==s10||x==s11||x==s12||x==s13)
{
if(x==s2)
g<<s-5;
else
if(x==s3)
g<<s-10;
else
if(x==s4)
g<<s-15;
else
if(x==s5)
g<<s-20;
else
if(x==s6)
g<<s+5;
else
if(x==s7)
g<<s+10;
else
if(x==s8)
g<<s+15;
else
if(x==s9)
g<<s+20;
else
if(x==s10)
g<<s-25;
else
if(x==s11)
g<<s-30;
else
if(x==s12)
g<<s+25;
else
if(x==s13)
g<<s+30;
else
g<<s;
}
else
g <<"-1";
}
}