Pagini recente » Cod sursa (job #240332) | Cod sursa (job #1031934) | Cod sursa (job #2765775) | Cod sursa (job #288472) | Cod sursa (job #2650132)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
long long gfact(long long fact, int base)
{
long long nr_div = 0;
while(fact)
{
nr_div += fact / base; fact /= base;
}
return nr_div;
}
unsigned int precalc[5000005];
long long precalc2[5000005];
#pragma GCC optimize("O3")
int main()
{
long long r; long long d; in >> r >> d;
long long cnt = 0;
int cutoff, initd = d;
if(d == 4) cutoff = 1;
else cutoff = 0;
if(d == 6) d = 3;
if(d == 4) d = 2;
//for(int i = 0; i <= r; i++)
// precalc[i] = gfact(i, d);
for(long long divs = d; divs <= r; divs*=d)
for(long long index = divs; index <= r; index += divs)
precalc[index] += 1;
for(long long index = 1; index <= r; index++)
precalc[index] += precalc[index-1];
if(initd == 6) {
for(long long divs = 2; divs <= r; divs*=2)
for(long long index = divs; index <= r; index += divs)
precalc2[index] += 1;
for(long long index = 1; index <= r; index++)
precalc2[index] += precalc2[index-1];
}
for(long long j = 0; j < r; j++)
{
if(precalc[r] - precalc[r-j] - precalc[j] > cutoff) {
if(initd == 6) {
if(precalc2[r] - precalc2[r-j] - precalc2[j] > 0) {
cnt++;
}
}
else {
cnt++;
}
}
}
out << cnt;
}