Cod sursa(job #2911519)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 30 iunie 2022 11:53:41
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <unordered_map>

#define NMAX 5000003

using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");


int n, k;
int p2[NMAX],p3[NMAX],p5[NMAX];


int main()
{
	fin >> n >> k;
	for (int i = 2; i <= n; i++)
	{
		if (i % 2 == 0)
		{
			p2[i] = p2[i / 2] + 1;
		}
		if (i % 3 == 0)
		{
			p3[i] = p3[i / 3] + 1;
		}
		if (i % 5 == 0)
		{
			p5[i] = p5[i / 5] + 1;
		}
	}
	
	int sol = 0;
	int s2 = 0, s3 = 0, s5 = 0;
	for (int i = 1; i <= n; i++)
	{
		s2 += p2[n - i + 1] - p2[i];
		s3 += p3[n - i + 1] - p3[i];
		s5 += p5[n - i + 1] - p5[i];

		if (k == 2 && s2 != 0)
		{
			sol++;
		}
		else if (k == 3 && s3 != 0)
		{
			sol++;
		}
		else if (k == 4 && s2 >= 2)
		{
			sol++;
		}
		else if (k == 5 && s5 != 0)
		{
			sol++;
		}
		else if (k == 6 && s2 != 0 && s3 != 0)
		{
			sol++;
		}
	}
	fout << sol;
	return 0;
}