Pagini recente » Cod sursa (job #693027) | Cod sursa (job #580588) | Cod sursa (job #3225325) | Cod sursa (job #542361) | Cod sursa (job #2195978)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
const int maxR = 50000000;
int f[3][maxR+1];
void computeF(int r) {
for(int d = 2; d <= r; d++) {
int k = d, c = 0;
while(k%2 == 0) {
k /= 2;
c++;
}
f[0][d] = f[0][d-1]+c;
k = d, c = 0;
while(k%3 == 0) {
k /= 3;
c++;
}
f[1][d] = f[1][d-1]+c;
k = d, c = 0;
while(k%5 == 0) {
k /= 5;
c++;
}
f[2][d] = f[2][d-1]+c;
}
}
int main()
{
int r, d, s = 0;
in >> r >> d;
computeF(r);
if(d == 6) {
for(int j = 1, n = r/2; j <= n; j++) {
if(f[0][r] - f[0][j] - f[0][r-j] > 0 && f[1][r] - f[1][j] - f[1][r-j] > 0)
s++;
}
s *= 2;
if(r%2 == 0) s--;
} else if (d == 4) {
for(int j = 1, n = r/2; j <= n; j++) {
if(f[0][r] - f[0][j] - f[0][r-j] > 1)
s++;
}
s *= 2;
if(r%2 == 0) s--;
} else {
int k;
if(d == 2) k = 0;
else if(d == 3) k = 1;
else if(d == 5) k = 2;
for(int j = 1, n = r/2; j <= n; j++) {
if(f[k][r] - f[k][j] - f[k][r-j] > 0)
s++;
}
s *= 2;
if(r%2 == 0) s--;
}
out << s;
return 0;
}