Submission #25072176
Source Code Expand
Copy
#include <bits/stdc++.h>using namespace std;int MOD = 1000000007;int PMOD = 1000000007;inline int exgcd(int a, int md = MOD) {a %= md;if (a < 0) a += md;int b = md, u = 0, v = 1;while (a) {int t = b / a;b -= t * a; swap(a, b);u -= t * v; swap(u, v);}if (u < 0) u += md;return u;}inline int add(int a, int b) { return a + b >= MOD ? a + b - MOD : a + b; }inline int sub(int a, int b) { return a - b < 0 ? a - b + MOD : a - b; }inline int mul(int a, int b) { return 1LL * a * b % MOD; }inline int powmod(int a, long long b) {int res = 1;
#include <bits/stdc++.h> using namespace std; int MOD = 1000000007; int PMOD = 1000000007; inline int exgcd(int a, int md = MOD) { a %= md; if (a < 0) a += md; int b = md, u = 0, v = 1; while (a) { int t = b / a; b -= t * a; swap(a, b); u -= t * v; swap(u, v); } if (u < 0) u += md; return u; } inline int add(int a, int b) { return a + b >= MOD ? a + b - MOD : a + b; } inline int sub(int a, int b) { return a - b < 0 ? a - b + MOD : a - b; } inline int mul(int a, int b) { return 1LL * a * b % MOD; } inline int powmod(int a, long long b) { int res = 1; while (b > 0) { if (b & 1) res = 1LL * res * a % MOD; a = 1LL * a * a % MOD; b >>= 1; } return res; } constexpr int maximum = 200000; vector<int> fac(maximum + 1), ifac(maximum + 1), ord(maximum + 1); vector<long long> pdivs, divs; // 质因子数组 和 质因子的幂次数组 // 求解形如 x = ci (mod mi) 的线性方程组 mi 必须是素数 int CRT(vector<long long> c, vector<long long> m) { long long M = m[0], ans = 0; for (int i = 1; i < (int)m.size(); ++i) M *= m[i]; for (int i = 0; i < (int)m.size(); ++i) { // Mi * ti * ci long long mi = M / m[i]; long long ti = exgcd(mi, m[i]); // mi 模 m[i] 的逆元 ans = (ans + mi * ti % M * c[i] % M) % M; } ans = (ans + M) % M; // 返回模 M 意义下的唯一解 return ans; } inline int binom(int n, int m) { if (n < m || n < 0 || m < 0) return 0; int res = mul(fac[n], exgcd(mul(fac[n - m], fac[m]))); res = mul(res, powmod(PMOD, ord[n] - ord[n - m] - ord[m])); return res; } void prepareFactorials() { ord[0] = ord[1] = 0, fac[0] = fac[1] = 1; for (int i = 2; i <= maximum; i++) { long long cnt = 0, now = i; while (now % MOD == 0) { ++cnt; now /= MOD; } ord[i] = ord[i - 1] + cnt; // ord 是MOD这一质因子的出现次数前缀和 fac[i] = mul(fac[now - 1], now); // fac是去掉了MOD这一质因子后的阶乘 } } void getDivisors(int x) { for (int i = 2; 1LL * i * i <= x; i++) { int d = 1; while (x % i == 0) x /= i, d *= i; if (d != 1) { pdivs.emplace_back(i); divs.emplace_back(d); } } if (x != 1) { pdivs.emplace_back(x); divs.emplace_back(x); } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, t, res = 1; cin >> n >> t >> MOD; if (MOD == 1) { cout << "0\n"; return 0; } getDivisors(MOD); vector<pair<int, int>> pr(n), rp; vector<long long> C; for (auto& i : pr) { cin >> i.first >> i.second; auto [x, y] = i; x = abs(x), y = abs(y); if ((t - x - y) < 0 || (t - x - y) % 2 != 0) { cout << 0 << "\n"; return 0; } else { int dx = abs(x + y), dy = abs(y - x); rp.push_back({ (t - dx) / 2 + dx, (t - dy) / 2 + dy }); } } for (int i = 0; i < (int)pdivs.size(); i++) { MOD = divs[i]; PMOD = pdivs[i]; prepareFactorials(); res = 1; for (int j = 0; j < rp.size(); j++) { auto [x, y] = rp[j]; int cnt = mul(binom(t, x), binom(t, y)); res = mul(res, cnt); } C.push_back(res); } cout << CRT(C, divs) << "\n"; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Don't worry. Be Together |
User | st1vdy |
Language | C++ (GCC 9.2.1) |
Score | 100 |
Code Size | 3595 Byte |
Status | AC |
Exec Time | 234 ms |
Memory | 7424 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:112:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 112 | for (int j = 0; j < rp.size(); j++) { | ~~^~~~~~~~~~~
Judge Result
Set Name | part1 | part2 | part3 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 40 / 40 | 30 / 30 | 30 / 30 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
part1 | part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt |
part2 | part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt |
part3 | part1/part1_00_sample_00.txt, part1/part1_00_sample_01.txt, part1/part1_maxrand_00.txt, part1/part1_maxrand_01.txt, part1/part1_maxrand_02.txt, part1/part1_maxrand_03.txt, part1/part1_maxrand_04.txt, part1/part1_maxrand_05.txt, part1/part1_maxrand_06.txt, part1/part1_maxrand_07.txt, part1/part1_maxrand_08.txt, part1/part1_maxrand_09.txt, part1/part1_maxrand_10.txt, part1/part1_maxrand_11.txt, part1/part1_maxrand_12.txt, part1/part1_maxrand_13.txt, part1/part1_maxrand_14.txt, part1/part1_rand1_00.txt, part1/part1_rand1_01.txt, part1/part1_rand1_02.txt, part1/part1_rand1_03.txt, part1/part1_rand2_00.txt, part1/part1_rand2_01.txt, part1/part1_rand2_02.txt, part1/part1_rand2_03.txt, part1/part1_rand2_04.txt, part1/part1_rand2_05.txt, part1/part1_rand2_06.txt, part1/part1_rand2_07.txt, part1/part1_rand2_08.txt, part1/part1_rand2_09.txt, part2/part2_00_sample_02.txt, part2/part2_00_sample_03.txt, part2/part2_maxrand_00.txt, part2/part2_maxrand_01.txt, part2/part2_maxrand_02.txt, part2/part2_maxrand_03.txt, part2/part2_maxrand_04.txt, part2/part2_maxrand_05.txt, part2/part2_maxrand_06.txt, part2/part2_maxrand_07.txt, part2/part2_maxrand_08.txt, part2/part2_maxrand_09.txt, part2/part2_maxrand_10.txt, part2/part2_maxrand_11.txt, part2/part2_maxrand_12.txt, part2/part2_maxrand_13.txt, part2/part2_maxrand_14.txt, part2/part2_rand1_00.txt, part2/part2_rand1_01.txt, part2/part2_rand1_02.txt, part2/part2_rand1_03.txt, part2/part2_rand2_00.txt, part2/part2_rand2_01.txt, part2/part2_rand2_02.txt, part2/part2_rand2_03.txt, part2/part2_rand2_04.txt, part2/part2_rand2_05.txt, part2/part2_rand2_06.txt, part2/part2_rand2_07.txt, part2/part2_rand2_08.txt, part2/part2_rand2_09.txt, part3/part3_maxrand_00.txt, part3/part3_maxrand_01.txt, part3/part3_maxrand_02.txt, part3/part3_maxrand_03.txt, part3/part3_maxrand_04.txt, part3/part3_maxrand_05.txt, part3/part3_maxrand_06.txt, part3/part3_maxrand_07.txt, part3/part3_maxrand_08.txt, part3/part3_maxrand_09.txt, part3/part3_maxrand_10.txt, part3/part3_maxrand_11.txt, part3/part3_maxrand_12.txt, part3/part3_maxrand_13.txt, part3/part3_maxrand_14.txt, part3/part3_rand1_00.txt, part3/part3_rand1_01.txt, part3/part3_rand1_02.txt, part3/part3_rand1_03.txt, part3/part3_rand2_00.txt, part3/part3_rand2_01.txt, part3/part3_rand2_02.txt, part3/part3_rand2_03.txt, part3/part3_rand2_04.txt, part3/part3_rand2_05.txt, part3/part3_rand2_06.txt, part3/part3_rand2_07.txt, part3/part3_rand2_08.txt, part3/part3_rand2_09.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
part1/part1_00_sample_00.txt | AC | 13 ms | 5380 KB |
part1/part1_00_sample_01.txt | AC | 10 ms | 5332 KB |
part1/part1_maxrand_00.txt | AC | 73 ms | 7396 KB |
part1/part1_maxrand_01.txt | AC | 72 ms | 7384 KB |
part1/part1_maxrand_02.txt | AC | 71 ms | 7408 KB |
part1/part1_maxrand_03.txt | AC | 73 ms | 7248 KB |
part1/part1_maxrand_04.txt | AC | 72 ms | 7352 KB |
part1/part1_maxrand_05.txt | AC | 70 ms | 7280 KB |
part1/part1_maxrand_06.txt | AC | 72 ms | 7264 KB |
part1/part1_maxrand_07.txt | AC | 71 ms | 7316 KB |
part1/part1_maxrand_08.txt | AC | 69 ms | 7380 KB |
part1/part1_maxrand_09.txt | AC | 73 ms | 7284 KB |
part1/part1_maxrand_10.txt | AC | 73 ms | 7324 KB |
part1/part1_maxrand_11.txt | AC | 71 ms | 7364 KB |
part1/part1_maxrand_12.txt | AC | 72 ms | 7292 KB |
part1/part1_maxrand_13.txt | AC | 73 ms | 7284 KB |
part1/part1_maxrand_14.txt | AC | 72 ms | 7240 KB |
part1/part1_rand1_00.txt | AC | 9 ms | 6084 KB |
part1/part1_rand1_01.txt | AC | 8 ms | 5684 KB |
part1/part1_rand1_02.txt | AC | 11 ms | 6380 KB |
part1/part1_rand1_03.txt | AC | 8 ms | 6344 KB |
part1/part1_rand2_00.txt | AC | 54 ms | 6944 KB |
part1/part1_rand2_01.txt | AC | 27 ms | 6044 KB |
part1/part1_rand2_02.txt | AC | 61 ms | 7260 KB |
part1/part1_rand2_03.txt | AC | 68 ms | 7372 KB |
part1/part1_rand2_04.txt | AC | 25 ms | 6092 KB |
part1/part1_rand2_05.txt | AC | 34 ms | 6412 KB |
part1/part1_rand2_06.txt | AC | 39 ms | 6376 KB |
part1/part1_rand2_07.txt | AC | 16 ms | 5764 KB |
part1/part1_rand2_08.txt | AC | 18 ms | 5948 KB |
part1/part1_rand2_09.txt | AC | 21 ms | 6036 KB |
part2/part2_00_sample_02.txt | AC | 17 ms | 5400 KB |
part2/part2_00_sample_03.txt | AC | 19 ms | 5404 KB |
part2/part2_maxrand_00.txt | AC | 67 ms | 7424 KB |
part2/part2_maxrand_01.txt | AC | 9 ms | 5452 KB |
part2/part2_maxrand_02.txt | AC | 63 ms | 7352 KB |
part2/part2_maxrand_03.txt | AC | 87 ms | 7384 KB |
part2/part2_maxrand_04.txt | AC | 80 ms | 7240 KB |
part2/part2_maxrand_05.txt | AC | 215 ms | 7268 KB |
part2/part2_maxrand_06.txt | AC | 36 ms | 7380 KB |
part2/part2_maxrand_07.txt | AC | 124 ms | 7424 KB |
part2/part2_maxrand_08.txt | AC | 52 ms | 7264 KB |
part2/part2_maxrand_09.txt | AC | 7 ms | 5268 KB |
part2/part2_maxrand_10.txt | AC | 68 ms | 7284 KB |
part2/part2_maxrand_11.txt | AC | 8 ms | 5384 KB |
part2/part2_maxrand_12.txt | AC | 216 ms | 7288 KB |
part2/part2_maxrand_13.txt | AC | 54 ms | 7384 KB |
part2/part2_maxrand_14.txt | AC | 8 ms | 5404 KB |
part2/part2_rand1_00.txt | AC | 7 ms | 5984 KB |
part2/part2_rand1_01.txt | AC | 7 ms | 6016 KB |
part2/part2_rand1_02.txt | AC | 6 ms | 6072 KB |
part2/part2_rand1_03.txt | AC | 9 ms | 6356 KB |
part2/part2_rand2_00.txt | AC | 53 ms | 7176 KB |
part2/part2_rand2_01.txt | AC | 41 ms | 7116 KB |
part2/part2_rand2_02.txt | AC | 42 ms | 7052 KB |
part2/part2_rand2_03.txt | AC | 37 ms | 7316 KB |
part2/part2_rand2_04.txt | AC | 27 ms | 7124 KB |
part2/part2_rand2_05.txt | AC | 85 ms | 7148 KB |
part2/part2_rand2_06.txt | AC | 56 ms | 7164 KB |
part2/part2_rand2_07.txt | AC | 80 ms | 7288 KB |
part2/part2_rand2_08.txt | AC | 198 ms | 7184 KB |
part2/part2_rand2_09.txt | AC | 93 ms | 7248 KB |
part3/part3_maxrand_00.txt | AC | 72 ms | 7392 KB |
part3/part3_maxrand_01.txt | AC | 10 ms | 5416 KB |
part3/part3_maxrand_02.txt | AC | 70 ms | 7364 KB |
part3/part3_maxrand_03.txt | AC | 87 ms | 7352 KB |
part3/part3_maxrand_04.txt | AC | 84 ms | 7240 KB |
part3/part3_maxrand_05.txt | AC | 229 ms | 7360 KB |
part3/part3_maxrand_06.txt | AC | 37 ms | 7420 KB |
part3/part3_maxrand_07.txt | AC | 130 ms | 7284 KB |
part3/part3_maxrand_08.txt | AC | 55 ms | 7296 KB |
part3/part3_maxrand_09.txt | AC | 8 ms | 5456 KB |
part3/part3_maxrand_10.txt | AC | 69 ms | 7212 KB |
part3/part3_maxrand_11.txt | AC | 7 ms | 5268 KB |
part3/part3_maxrand_12.txt | AC | 234 ms | 7400 KB |
part3/part3_maxrand_13.txt | AC | 53 ms | 7260 KB |
part3/part3_maxrand_14.txt | AC | 9 ms | 5320 KB |
part3/part3_rand1_00.txt | AC | 5 ms | 5968 KB |
part3/part3_rand1_01.txt | AC | 9 ms | 6092 KB |
part3/part3_rand1_02.txt | AC | 6 ms | 5968 KB |
part3/part3_rand1_03.txt | AC | 10 ms | 6348 KB |
part3/part3_rand2_00.txt | AC | 56 ms | 7060 KB |
part3/part3_rand2_01.txt | AC | 46 ms | 7220 KB |
part3/part3_rand2_02.txt | AC | 40 ms | 7128 KB |
part3/part3_rand2_03.txt | AC | 34 ms | 7420 KB |
part3/part3_rand2_04.txt | AC | 33 ms | 7160 KB |
part3/part3_rand2_05.txt | AC | 87 ms | 7148 KB |
part3/part3_rand2_06.txt | AC | 54 ms | 7216 KB |
part3/part3_rand2_07.txt | AC | 84 ms | 7204 KB |
part3/part3_rand2_08.txt | AC | 214 ms | 7188 KB |
part3/part3_rand2_09.txt | AC | 91 ms | 7208 KB |