Cod sursa(job #2285577)

Utilizator skoda888Alexandru Robert skoda888 Data 18 noiembrie 2018 19:04:22
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.6 kb

#include <iostream>
#include <cstdio>

using namespace std;

int power[10];
int r, d, sol;

void solve()
{
	if (d == 2) {
		for (int i = 1; i <= r/2; i++) {
			int sus = r-i+1, jos = i;
			while (sus % 2 == 0)
				power[2]++, sus /= 2;
			while (jos % 2 == 0)
				power[2]--, jos /= 2;
			sol += !!(power[2]);
		}
	}
	else if (d == 3) {
		for (int i = 1; i <= r/2; i++) {
			int sus = r-i+1, jos = i;
			while (sus % 3 == 0)
				power[3]++, sus /= 3;
			while (jos % 3 == 0)
				power[3]--, jos /= 3;
			sol += !!(power[3]);
		}
	}
	else if (d == 4) {
		for (int i = 1; i <= r/2; i++) {
			int sus = r-i+1, jos = i;
			while (sus % 2 == 0)
				power[2]++, sus /= 2;
			while (jos % 2 == 0)
				power[2]--, jos /= 2;
			sol += !!(power[2] >> 1);
		}
	}
	else if (d == 5) {
		for (int i = 1; i <= r/2; i++) {
			int sus = r-i+1, jos = i;
			while (sus % 5 == 0)
				power[5]++, sus /= 5;
			while (jos % 5 == 0)
				power[5]--, jos /= 5;
			sol += !!(power[5]);
		}
	}
	else if (d == 6) {
		for (int i = 1; i <= r/2; i++) {
			int sus = r-i+1, jos = i;
			while (sus % 2 == 0)
				power[2]++, sus /= 2;
			while (jos % 2 == 0)
				power[2]--, jos /= 2;
			sus = r-i+1, jos = i;
			while (sus % 3 == 0)
				power[3]++, sus /= 3;
			while (jos % 3 == 0)
				power[3]--, jos /= 3;
			sol += !!power[2] && !!power[3];
		}
	}
    if (sol && !(r&1))
		sol = (sol << 1) - 1;
	else
		sol <<= 1;
}

int main()
{
	freopen("pascal.in", "r", stdin);
	freopen("pascal.out", "w", stdout);

	scanf("%d %d", &r, &d);
    solve();
    printf("%d", sol);

    return 0;
}