SPJ 更正

P4369 [Code+#4] 组合数问题

@[dottle](/user/79067) @[_RSY_](/user/46197)
by jijidawang @ 2022-10-12 17:37:36


@[chen_zhe](/user/8457)
by jijidawang @ 2022-10-12 18:45:55


能不能顺便撤一下最后一篇题解,明显不是这个题的 .
by Implicit @ 2022-10-13 20:29:46


@[览遍千秋](/user/28910)
by jijidawang @ 2022-11-06 10:35:43


@[Maxmilite](/user/274993)
by jijidawang @ 2022-11-09 18:51:59


@[Implicit](/user/325613) @[jijidawang](/user/227514) 题解已经撤下,不过这个 SPJ 好像给很多题解都橄榄了... 我再检查一下。
by Maxmilite @ 2022-11-09 19:45:05


@[jijidawang](/user/227514) 经过验证,您的 SPJ 好像并不能正常工作。 目前 SPJ 维持原样,请检查后再试一下。
by Maxmilite @ 2022-11-09 19:58:52


@[Maxmilite](/user/274993) 我把你那个 UKE 提交再交了一遍就 AC 了???
by jijidawang @ 2022-11-09 20:04:35


@[jijidawang](/user/227514) 现在 SPJ 是维持原样的。
by Maxmilite @ 2022-11-09 20:06:31


@[Maxmilite](/user/274993) 粘错版本了…… 下面这个应该就行了 ```cpp #include "testlib.h" int main(int argc, char* argv[]) { registerTestlibCmd(argc, argv); int x = inf.readInt(), k = inf.readInt(); std :: vector<std :: pair<int, int>> v(k); for (int i=0; i<k; i++){v[i].first = ouf.readInt(); v[i].second = ouf.readInt(); ans.readEoln();} std :: stable_sort(v.begin(), v.end()); for (int i=0; i<k-1; i++) if (v[i] == v[i+1]) quitf(_wa, "The answer is wrong (Some binomial numbers are the same)."); auto check = [&](int p) -> bool { std :: vector<int> fac(p), ifac(p); auto qpow = [&](int a, int n) -> int { int ans = 1; while (n) { if (n & 1) ans = 1ll * ans * a % p; a = 1ll * a * a % p; n >>= 1; } return ans % p; }; fac[0] = 1; for (int i=1; i<p; i++) fac[i] = 1ll * fac[i-1] * i % p; ifac[p-1] = qpow(p-1, p-2); for (int i=p-2; i>=0; i--) ifac[i] = 1ll * ifac[i+1] * (i+1) % p; auto C = [&](int n, int m) -> int {return n < m ? 0 : 1ll * fac[n] * ifac[m] % p * ifac[n-m] % p;}; auto binom = [&](auto&& self, int n, int m) -> int {return (n < p) ? C(n, m) : (n < m) ? 0 : 1ll * C(n % p, m % p) * self(self, n/p, m/p) % p;}; int ans = 0; for (int i=0; i<k; i++) (ans += binom(binom, v[i].first, v[i].second)) %= p; return ans % p == x % p; }; if (!check(2953)) quitf(_wa, "The answer is wrong (The sum of these binomial numbers is not x)."); if (!check(1145141)) quitf(_wa, "The answer is wrong (The sum of these binomial numbers is not x)."); if (!check(1e6+3)) quitf(_wa, "The answer is wrong (The sum of these binomial numbers is not x)."); quitf(_ok, "The answer is correct."); return 0; } ```
by jijidawang @ 2022-11-09 20:11:26


| 下一页