Cod sursa(job #2923436)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 13 septembrie 2022 19:58:43
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
using namespace std;

const int nmax = 5000005;
uint8_t c[nmax][3];

void build()
{
	for(int i = 2;i < nmax;++i)
	{
		if(i % 2 == 0)
			c[i][0] = c[i / 2][0] + 1;
		if(i % 3 == 0)
			c[i][1] = c[i / 3][1] + 1;
		if(i % 5 == 0)
			c[i][2] = c[i / 5][2] + 1;
	}
}

int solve(int r, int d)
{
	int pw[3] = {0}, ans = 0, nr = r;
	
	for(int i = 1;i <= r;++i)
	{
		for(int j = 0;j <= 2;++j)
		{
			pw[j] += c[nr][j];
			pw[j] -= c[i][j];
		}
		--nr;
		bool ok = true;
		for(int j = 0;j <= 2;++j)
			if(pw[j] < c[d][j])
			{
				ok = false;
				break;
			}
		if(ok)
			++ans;
	}
	return ans;
}

int main() {
	build();
	int r, d;
	freopen("pascal.in", "r", stdin);
	freopen("pascal.out", "w", stdout);
	cin >> r >> d;
	cout << solve(r, d);
}