Cod sursa(job #928342)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 26 martie 2013 13:32:19
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <iostream>
#include <fstream>

using namespace std;

#define Nmax 5000005

int R, S, D, N2, N3, N5;
int Nr2[Nmax], Nr3[Nmax], Nr5[Nmax];

void citire(){

    ifstream f("pascal.in");

    f >> R >> D;

    f.close();
}

void afis(){

    ofstream g("pascal.out");

    g << S << "\n";

    g.close();
}

void rezolva(){

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

        if ( i % 2 == 0 )
            Nr2[i] = Nr2[i / 2] + 1;

        if ( i % 3 == 0 )
            Nr3[i] = Nr3[i / 3] + 1;

        if ( i % 5 == 0 )
            Nr5[i] = Nr5[i / 5] + 1;
    }

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


        N2 = N2 - Nr2[i] + Nr2[R - i + 1];
        N3 = N3 - Nr3[i] + Nr3[R - i + 1];
        N5 = N5 - Nr5[i] + Nr5[R - i + 1];

        switch( D ){

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

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

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

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

            case 6:
                    if ( N2 && N3 )
                        S++;
                    break;

            default: break;
        }
    }
}

int main(){

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

    return 0;
}