Pagini recente » Cod sursa (job #1621100) | Cod sursa (job #2659893) | Cod sursa (job #115013) | Cod sursa (job #2660313) | Cod sursa (job #1752477)
/* 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, j = 2; i < n && j <= ((n + 2) >> 1); i ++, j ++ ) {
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; }
}
if( j == ((n + 1) >> 1) )
ans <<= 1;
}
out << ans << endl;
return 0;
}