Submission #19919

#TimeUsernameProblemLanguageResultExecution timeMemory
19919xdoju괄호 (kriii4_R)C++14
8 / 100
125 ms1084 KiB
#include <cstdio>
using namespace std;

const int MOD = 1000000007ll;

int modpow(int r, int n) {
	int ret = 1;
	while (n > 0) {
		if (n % 2 > 0) {
			ret = ((long long)ret * r) % MOD;
		}
		r = ((long long)r * r) % MOD;
		n /= 2;
	}
	return ret;
}

inline int modinv(int n) {
	return modpow(n, MOD - 2);
}

inline int modprod(int a, int b) {
	a = a % MOD;
	b = b % MOD;
	return ((long long)a * b) % MOD;
}

inline int modprod(int a, int b, int c) {
	c = c % MOD;
	return (modprod(a, b) * (long long)c) % MOD;
}

inline int moddiv(int a, int b) {
	return ((long long)a * modinv(b)) % MOD;
}

int cc(int n) {
	int ret = 1;
	for (int k = 2 * n; k > n; --k) {
		ret = modprod(ret, k);
	}
	for (int k = 1; k <= n; ++k) {
		ret = moddiv(ret, k);
	}
	return ret;
}

void proc() {
	int n, k;
	scanf("%d %d", &n, &k);

	if (n % 2 == 0) {
		printf("%d", cc(n / 2));
	}
	else {
		printf("%d", moddiv(cc((n + 1) / 2), 2));
	}
}

int main() {
	proc();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...