Pagini recente » Cod sursa (job #2560060) | Cod sursa (job #2386328) | Cod sursa (job #1402) | Cod sursa (job #1846651) | Cod sursa (job #1319854)
#include<cstdio>
using namespace std;
FILE *fin = fopen( "pascal.in", "r" ), *fout = fopen( "pascal.out", "w" );
const int nmax = 5000000;
int d1, d2, d, r, ans, f1[ nmax + 1 ], f2[ nmax + 1 ];
void precalc() {
for( int p = d1; p <= r; p *=d1 ) {
for( int i = p; i <= r; i += p ) {
++ f1[ i ];
}
}
if ( d2 != 0 ) {
for( int p = d2; p <= r; p *= d2 ) {
for( int i = p; i <= r; i += p ) {
++ f2[ i ];
}
}
}
}
void solve( int i ) {
int lim, x = f1[ r ] - f1[ i ] - f1[ r - i ];
lim = 0;
if ( d == 6 ) {
int y = f2[ r ] - f2[ i ] - f2[ r - i ];
x = x < y ? x : y;
}
if ( d == 4 ) {
lim = 1;
}
if ( x > lim ) {
++ ans;
}
}
int main() {
fscanf( fin, "%d%d", &r, &d1 );
d = d1;
if ( d1 == 6 ) {
d1 = 2;
d2 = 3;
} else if ( d1 == 4 ) {
d1 = 2;
}
precalc();
ans = 0;
for( int i = 0; i <= r / 2; ++ i ) {
solve( i );
}
ans *= 2;
if ( (r & 1) == 0 ) {
solve( r / 2 + 1 );
}
fprintf( fout, "%d\n", ans );
fclose( fin );
fclose( fout );
return 0;
}