Cod sursa(job #1167385)

Utilizator Pateu69Ciprian O. Pateu69 Data 4 aprilie 2014 21:31:26
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#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;
}