@[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