Pagini recente » Cod sursa (job #2059141) | Rating Alex Peltecu (AlexPelt) | Istoria paginii utilizator/poison_girl | Cod sursa (job #1075936) | Cod sursa (job #2280953)
#include <iostream>
#include <fstream>
#include <cmath>
int main()
{
std::ifstream in("pascal.in");
std::ofstream out("pascal.out");
long long R;
int D;
in >> R >> D;
int doi[R + 1] = {}, trei[R + 1] = {}, cinci[R + 1] = {};
for(int i = 2; i <= R; ++i){
if(D == 2 || D == 4 || D == 6){
int p = 2;
while(p <= i){
doi[i] += i / p;
p *= p;
}
}
if(D == 3 || D == 6){
int p = 3;
while(p <= i){
trei[i] += i / p;
p *= p;
}
}
if(D == 5){
int p = 5;
while(p <= i){
cinci[i] += i / p;
p *= p;
}
}
}
//std::cout << doi[2] << ' ' << doi[3] << ' ' << doi[4];
int k = 0;
for(int j = 0; j < R; ++j){
int comb2 = std::abs(doi[R] - doi[R - j] - doi[j]);
int comb3 = std::abs(trei[R] - trei[R - j] - trei[j]);
int comb5 = std::abs(cinci[R] - cinci[R - j] - cinci[j]);
if(D == 2 && comb2 > 0){
++k;
}
else if(D == 4 && comb2 > 1){
++k;
}
else if(D == 3 && comb3 > 0){
++k;
}
else if(D == 6 && comb3 > 0 && comb2 > 0){
++k;
}
else if(comb5 > 0){
++k;
}
}
out << k;
return 0;
}