Cod sursa(job #2835644)

Utilizator luiz_felipeLuiz Felipe luiz_felipe Data 19 ianuarie 2022 00:34:13
Problema Pascal Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <vector>
using namespace std;
const int dim = 5000001;
vector<int> v2(dim), v3(dim), v5(dim);
int res[6] = { 0 };
int d, r, ans, i;
ifstream f("pascal.in");
ofstream g("pascal.out");

int main()
{
	for (f >> r >> d, i = 1; i <= r; ++i)
	{
		if (i % 2 == 0) v2[i] = v2[i / 2] + 1;
		if (i % 3 == 0) v3[i] = v3[i / 3] + 1;
		if (i % 5 == 0) v5[i] = v5[i / 5] + 1;
	}
	for (i = 2; i <= r; ++i)
	{
		v2[i] += v2[i - 1];
		v3[i] += v3[i - 1];
		v5[i] += v5[i - 1];
	}
	for (i = 0; i <= r; ++i)
	{
		res[2] = v2[r] - v2[i] - v2[r - i];
		res[3] = v3[r] - v3[i] - v3[r - i];
		res[5] = v5[r] - v5[i] - v5[r - i];
		switch (d)
		{
		case 2:
			if (res[2]) ++ans;
			break;
		case 3:
			if (res[3]) ++ans;
			break;
		case 4:
			if (res[4] > 1) ++ans;
			break;
		case 5:
			if (res[5]) ++ans;
			break;
		case 6:
			if (res[2] && res[3]) ++ans;
			break;
		default:
			break;
		}
	}
	g << ans;
}