Cod sursa(job #1752479)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 4 septembrie 2016 00:53:11
Problema Pascal Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
/* Memorie cache nesuferita... */

#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], n, p, ans;
int d1[DIM], d2[DIM], d3[DIM];

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

    in >> n >> p;

    for( int i = 1; i <= n; i ++ ) {
        if( i % 2 == 0 ) d1[i] = d1[i / 2] + 1;
        if( i % 3 == 0 ) d2[i] = d2[i / 3] + 1;
        if( i % 5 == 0 ) d3[i] = d3[i / 5] + 1;
    }

    for( int i = 1; i <= n; i ++ ) {
        v[0] += d1[n - i + 1] - d1[i];
        v[1] += d2[n - i + 1] - d2[i];
        v[2] += d3[n - i + 1] - d2[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;
}