Cod sursa(job #859185)

Utilizator ELHoriaHoria Cretescu ELHoria Data 19 ianuarie 2013 20:20:02
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream cin("pascal.in");
ofstream cout("pascal.out");

const int rmax = 5000002;
int R, D;
short m[rmax][3];
short curr[3], cond[3];
const int divs[3] = {2,3,5};

int main()
{
	cin>>R>>D;
	for(int k = 0;k < 3;k++) {
		while(D%divs[k] == 0) {
			cond[k]++;
			D /= divs[k];
		}
	}
	for(int i = 2;i <= R;i++) {
		for(int aux = i, k = 0;k < 3;k++) {
			while(aux%divs[k] == 0) {
				aux /= divs[k];
				m[i][k]++;
			}
		}
	}

	int ans = 0;
	for(int i = 1;i <= R;i++) {
		bool isDivisible = true;
		for(int k = 0;k < 3;k++) {
			curr[k] += m[R - i + 1][k];
			curr[k] -= m[i][k];
			isDivisible &= (curr[k] >= cond[k]);
		}
		ans += isDivisible;
	}
	cout<<ans;
	return 0;
}