Cod sursa(job #801664)

Utilizator vld7Campeanu Vlad vld7 Data 24 octombrie 2012 19:19:55
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <algorithm>

using namespace std;

FILE *f = fopen ("pascal.in","r");
FILE *g = fopen ("pascal.out","w");

int d[10];

int main()
{
	int R, D;
	long long sol = 0;
	
	fscanf (f, "%d%d", &R, &D);
	for (int k = 1; k <= R; k++) {
		int N = R - k +1;
		
		while (N % 2 == 0) {
			N /= 2;
			d[2]++;
		}
		while (N % 3 == 0) {
			N /= 3;
			d[3]++;
		}
		while (N % 5 == 0) {
			N /= 5;
			d[5]++;
		}
		
		int K = k;
		while (K % 2 == 0) {
			K /= 2;
			d[2]--;
		}
		while (K % 3 == 0) {
			K /= 3;
			d[3]--;
		}
		while (K % 5 == 0) {
			K /= 5;
			d[5]--;
		}
		
		if (D == 4) {
			if (d[2] >= 2)
				sol++;
		}
		else if (D == 6) {
			if (min(d[2],d[3]) > 0)
				sol++;
		}
		else
			if (d[D])
				sol++;
	}
	
	fprintf (g, "%lld\n", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}