Cod sursa(job #2209126)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 1 iunie 2018 19:43:40
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
// the cahce of old processors is what will bring our end, someday :<
#include <bits/stdc++.h>
using namespace std;

ifstream fi("pascal.in");
ofstream fo("pascal.out");

const int N = 5000005;

int p2[N], p3[N], p5[N], d[3], cd[3];

int ant, n, dv, t;


int main() {
	fi >> n >> dv;

	if (dv % 2 == 0)
	for (int i = 2; i <= n; ++i)
		if (i % 2 == 0) p2[i] = p2[i / 2] + 1;

	if (dv % 3 == 0)
	for (int i = 2; i <= n; ++i)
		if (i % 3 == 0) p3[i] = p3[i / 3] + 1;

	if (dv % 5 == 0)
	for (int i = 2; i <= n; ++i)
		if (i % 5 == 0) p5[i] = p5[i / 5] + 1;

	if (dv % 2 == 0) 
		d[0]+= 1;
	if (dv % 3 == 0)
		d[1]+= 1;
	if (dv % 4 == 0)
		d[0]+= 1;
	if (dv % 5 == 0)
		d[2]+= 1;

	for (int i = 1; i <= n; ++i) {
		cd[0]+= p2[n - i + 1] - p2[i];
		cd[1]+= p3[n - i + 1] - p3[i];
		cd[2]+= p5[n - i + 1] - p5[i];

		if (cd[0] >= d[0] && cd[1] >= d[1] && cd[2] >= d[2])
			ant+= 1; }

	fo << ant << endl;

	return 0; }