Pagini recente » Cod sursa (job #1719803) | Cod sursa (job #1538765) | Cod sursa (job #1410703) | Cod sursa (job #117241) | Cod sursa (job #2694122)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r, d;
int cnt[2][5000005];
void precalc(int *v, int x, int n){
for (int i = x; i <= n; i *= x){
for (int j = i; j <= n; j += i){
v[j]++;
}
}
for (int i = 1; i <= n; ++i){
v[i] += v[i - 1];
}
}
int main(){
fin >> r >> d;
if (d == 2 || d == 4){
precalc(cnt[0], 2, r);
}
else if (d == 3 || d == 5){
precalc(cnt[0], d, r);
}
else{
precalc(cnt[0], 2, r);
precalc(cnt[1], 3, r);
}
int ans = 0;
for (int i = 0; i <= r; ++i){
int sum1 = cnt[0][r] - cnt[0][i] - cnt[0][r - i];
int sum2 = cnt[1][r] - cnt[1][i] - cnt[1][r - i];
if (d == 2 || d == 3 || d == 5){
if (sum1 > 0) ++ans;
}
else if (d == 4){
if (sum1 > 1) ++ans;
}
else{
if (sum1 > 0 && sum2 > 0) ++ans;
}
}
fout << ans;
fin.close();
fout.close();
return 0;
}