Cod sursa(job #904427)
#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
int main()
{
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r, d, sol = 0, div[7], i, j, k;
memset(div, 0, 7*sizeof(int));
//Read
fin>>r>>d;
//Compute
for(i=1; i*2<=r; i++)
{
k = r- 1;
while(k%2 == 0) k /= 2, div[2]++;
while(k%3 == 0) k /= 3, div[3]++;
while(k%5 == 0) k /= 5, div[5]++;
k = i;
while(k%2 == 0) k /= 2, div[2]--;
while(k%3 == 0) k /= 3, div[3]--;
while(k%5 == 0) k /= 5, div[5]--;
div[4] = div[2]/2;
div[6] = min(div[2],div[3]);
if(div[d] >= 1) sol += 2;
if(div[d]>=1 && i*2==r) sol--;
}
//Print
fout<<sol<<"\n";
}