Cod sursa(job #928253)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 26 martie 2013 12:58:03
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <iostream>
#include <fstream>

using namespace std;

long long R, S, D, Nr2, Nr3, Nr5;

long long Legendre( long long numar, long long fact ){

    long long s = 0;

    while ( numar >= fact )
        s += numar / fact,
        numar /= fact;

    return s;
}

void rezolva(){

    for ( long long i = 1; i < R; ++i ){

        Nr2 = Legendre( R, 2) - Legendre( i, 2) - Legendre( R - i, 2);
        Nr3 = Legendre( R, 3) - Legendre( i, 3) - Legendre( R - i, 3);
        Nr5 = Legendre( R, 5) - Legendre( i, 5) - Legendre( R - i, 5);

        switch( D ){

            case 2:
                    if ( Nr2 )
                        S++;
                    break;

            case 3:
                    if ( Nr3 )
                        S++;
                    break;

            case 4:
                    if ( Nr2 > 1 )
                        S++;
                    break;

            case 5:
                    if ( Nr5 )
                        S++;
                    break;

            case 6:
                    if ( Nr2 && Nr3 )
                        S++;
                    break;

            default: break;
        }
    }
}

void citire(){

    ifstream f("pascal.in");

    f >> R >> D;

    f.close();
}

void afis(){

    ofstream g("pascal.out");

    g << S << "\n";

    g.close();
}

int main(){

    citire();
    rezolva();
    afis();

    return 0;
}