intgcd(int n, int m){return m ? gcd(m, n % m) : n;}
intmain(){ int n, ans = 0; scanf("%d%d", &n, &ans); for (int i = 1; i < n; ++ i) { int x; scanf("%d", &x); ans = gcd(ans, x); } printf("%d", ans >= 0 ? ans : -ans); return0; }
constint mod = 1e9 + 7; int fact[500005], inv[500005];
intqpow(int a, int b){ int ret = 1LL; while (b) { if (b & 1) ret = ret * a % mod; a = a * a % mod; b >>= 1; } return ret; }
signedmain(){ int n, m, ret = 1LL, ret2 = 0LL; fact[0] = 1; for (int i = 1; i <= 500000; ++ i) fact[i] = fact[i - 1] * i % mod; inv[500000] = qpow(fact[500000], mod - 2); for (int i = 499999; i >= 0; -- i) inv[i] = inv[i + 1] * (i + 1) % mod; scanf("%lld%lld", &n, &m); for (int i = m - n + 1; i <= m; ++ i) ret = ret * i % mod; for (int i = 0; i <= n; ++ i) { int f = (i & 1 ? -1 : 1); ret2 = (ret2 + f * fact[n] * fact[m - i] % mod * inv[n - i] % mod * inv[i] % mod * inv[m - n] % mod) % mod; } ret = ret * (ret2 + mod) % mod; printf("%lld", ret); return0; }
#include<cstdio> #include<algorithm> #define int long long
inlineintmax(constint x, constint y){return x > y ? x : y;} constint mod = 1e9 + 9; int f[2005][2005], g[2005], a[2005], b[2005], cnt[2005]; int fact[2005], inv[2005], n, k;
intqpow(int a, int b){ int ret = 1LL; while (b) { if (b & 1) ret = ret * a % mod; a = a * a % mod; b >>= 1; } return ret; } intC(int n, int m){ return fact[n] * inv[n - m] % mod * inv[m] % mod; }
signedmain(){ scanf("%lld%lld", &n, &k); fact[0] = 1LL; for (int i = 1; i <= 2000; ++ i) fact[i] = fact[i - 1] * i % mod; inv[2000] = qpow(fact[2000], mod - 2); for (int i = 1999; i >= 0; -- i) inv[i] = inv[i + 1] * (i + 1) % mod; for (int i = 1; i <= n; ++ i) scanf("%lld", a + i); for (int i = 1; i <= n; ++ i) scanf("%lld", b + i); std::sort(a + 1, a + n + 1); std::sort(b + 1, b + n + 1); for (int i = 1; i <= n; ++ i) for (int j = 1; j <= n; ++ j) if (a[i] > b[j]) ++ cnt[i]; for (int i = 0; i <= n; ++ i) f[i][0] = 1LL; for (int i = 1; i <= n; ++ i) for (int j = 1; j <= n; ++ j) f[i][j] = (f[i - 1][j] + f[i - 1][j - 1] * max(cnt[i] - j + 1, 0)) % mod; for (int i = n; i >= 1; -- i) { g[i] = f[n][i] * fact[n - i] % mod; for (int j = i + 1; j <= n; ++ j) g[i] = (g[i] - g[j] * C(j, i) % mod + mod) % mod; } if (n + k & 1) putchar('0'); elseprintf("%lld", (g[n + k >> 1] + mod) % mod); return0; }