Cod sursa(job #1752470)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 4 septembrie 2016 00:25:45
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;

ifstream in ( "pascal.in"  );
ofstream out( "pascal.out" );

const int EXP = 1e0 + 3;
const int INF = 1e9 + 7;
const int DIM = 5e6 + 5;

const int c[EXP] = {2, 3, 5};

int v[EXP], d[EXP][DIM], n, p, ans;

int main( int argc, const char *argv[] ) {

    in >> n >> p;

    for( int k = 0; k <= 2; k ++ ) {
    for( int i = 1; i <= n; i ++ ) {
        if( i % c[k] == 0 )
            d[k][i] = d[k][i / c[k]] + 1;
    }}

    for( int i = 1; i < n; i ++ ) {
        for( int k = 0; k <= 2; k ++ )
            v[k] += d[k][n-i+1] - d[k][i];

        switch( p ) {
            case 2: { if( v[0] >= 1              ) ans ++; break; }
            case 3: { if( v[1] >= 1              ) ans ++; break; }
            case 4: { if( v[0] >= 2              ) ans ++; break; }
            case 5: { if( v[2] >= 1              ) ans ++; break; }
            case 6: { if( v[0] >= 1 && v[1] >= 1 ) ans ++; break; }
        }
    }

    out << ans << endl;
    return 0;
}