Pagini recente » Cod sursa (job #2621380) | Cod sursa (job #734779) | Cod sursa (job #43654) | Cod sursa (job #3184983) | Cod sursa (job #2217850)
#include <bits/stdc++.h>
#define RM 5000002
using namespace std;
int r, m, k, c2, c3, c5;
int f2[RM];
int f3[RM];
int f5[RM];
int k1;
int main()
{
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
fin >> r >> m;
if(m % 2 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 2)
f2[i] = 0;
else
f2[i] = f2[i / 2] + 1;
for(int i = 0; i <= r; i++)
f2[i] += f2[i - 1];
}
if(m % 3 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 3)
f3[i] = 0;
else
f3[i] = f3[i / 3] + 1;
for(int i = 0; i <= r; i++)
f3[i] += f3[i - 1];
}
if(m % 5 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 5)
f5[i] = 0;
else
f5[i] = f5[i / 5] + 1;
for(int i = 0; i <= r; i++)
f5[i] += f5[i - 1];
}
if(m % 2 == 0)
c2++;
if(m % 3 == 0)
c3++;
if(m % 4 == 0)
c2++;
if(m % 5 == 0)
c5++;
for(int i = 0; i <= r / 2; i++)
{
int e2, e3, e5;
e2 = f2[r] - f2[i] - f2[r - i];
e3 = f3[r] - f3[i] - f3[r - i];
e5 = f5[r] - f5[i] - f5[r - i];
k += (e2 >= c2 && e3 >= c3 && e5 >= c5);
if(r % 2 == 0 && i == r / 2)
k1 += (e2 >= c2 && e3 >= c3 && e5 >= c5);
}
fout << k * 2 - k1 << "\n";
return 0;
}