Pagini recente » Cod sursa (job #2668820) | Cod sursa (job #1182880) | Borderou de evaluare (job #798045) | Cod sursa (job #969392) | Cod sursa (job #1167385)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int n, fact, aux, sw,k;
int main()
{
fin>>n;
if(n==0) k=1;
if(n>=19531&&n<97656)
{n=n-19531;
fact=78125;}
if(n>=97656&&n<488281)
{n=n-97656;
fact=390625;}
if(n>=488281&&n<2441406)
{n=n-488281;
fact=1953125;}
if(n>=2441406&&n<6500000)
{n=n-2441406;
fact=9765625;}
if(n>=6500000&&n<7000000)
{ n=n-6500000;
fact=26000015;
}
if(n>=7000000&&n<12207031)
{
n=n-7000000;
fact=28000015;
}
if(n>=12207031&&n<61035156)
{n=n-12207031;
fact=48828125;}
if(n>=61035156&&n<305175781)
{n=n-61035156;
fact=244140625;}
if(n>=305175781)
{n=n-305175781;
fact=1220703125;}
while(n>0)
{
sw=0;
fact=fact+5;
if(fact%5==0&&fact>=5) sw=1;
if(fact%25==0&&fact>=25) sw=2;
if(fact%125==0&&fact>=125) sw=3;
if(fact%625==0&&fact>=625) sw=4;
if(fact%3125==0&&fact>=3125) sw=5;
if(fact%15625==0&&fact>=15625) sw=6;
if(fact%78125==0&&fact>=78125) sw=7;
if(fact%390625==0&&fact>=390625) sw=8;
if(fact%1953125==0&&fact>=1953125) sw=9;
if(fact%9765625==0&&fact>=9765625) sw=10;
if(fact%48828125==0&&fact>=48828125) sw=11;
if(fact%244140625==0&&fact>=244140625) sw=12;
if(fact%1220703125==0&&fact>=1220703125) sw=13;
n=n-sw;
}
if(n==0&&k==0)fout<<fact;
else if(k==1) fout<<"1";
else fout<<"-1";
return 0;
}