Pagini recente » Cod sursa (job #860337) | Cod sursa (job #3179841) | Cod sursa (job #2092653) | Cod sursa (job #2449581) | Cod sursa (job #1563512)
#include <fstream>
#include <vector>
using namespace std;
int cate_ori_apare_prim_fact(int x, const int p, const int tmp = 0){
return (x < p) ? tmp : cate_ori_apare_prim_fact(x/p, p, tmp + x/p); }
bool e_div(const int r, const int c, const int d){
if(d == 2 || d == 3 || d == 5){
int n = cate_ori_apare_prim_fact(r, d);
n -= cate_ori_apare_prim_fact(r-c, d);
n -= cate_ori_apare_prim_fact(c, d);
return n > 0; }
else if(d == 4){
int n = cate_ori_apare_prim_fact(r, 2);
n -= cate_ori_apare_prim_fact(r-c, 2);
n -= cate_ori_apare_prim_fact(c, 2);
return n > 1; }
else if(d == 6){
int n2 = cate_ori_apare_prim_fact(r, 2);
n2 -= cate_ori_apare_prim_fact(r-c, 2);
n2 -= cate_ori_apare_prim_fact(c, 2);
int n3 = cate_ori_apare_prim_fact(r, 3);
n3 -= cate_ori_apare_prim_fact(r-c, 3);
n3 -= cate_ori_apare_prim_fact(c, 3);
return n2 > 0 && n3 > 0; } }
int main(){
ifstream f("pascal.in");
ofstream g("pascal.out");
int r, d;
f >> r >> d;
int rez = 0;
for(int i = 0; i <= r; ++i){
rez += e_div(r, i, d); }
g << rez;
return 0; }