恶心构造数学题

淦,之前对 type 1 的证明伪爆了。


题目

你需要完成两个构造性问题:

  • 构造三个 \(\{0,1,\dots,n{-}1\}\) 的排列 \(\{a\},\{b\},\{c\}\) 使得 \(a_ib_i\equiv c_i\pmod{n}\)
  • 构造三个 \(\{0,1,\dots,n{-}1\}\) 的排列 \(\{a\},\{b\},\{c\}\) 使得 \(a_i^{b_i}\equiv c_i\pmod{n}\) 。特别地,不允许 \(0^0\) 出现。

若无解则报告无解。

\(\text{type 1}\)

用错误的方式得到了正确的结论

如果 \(n\) 是质数,除去 \(a_i=b_i=c_i=0\) 的项,由 \(\prod a_ib_i=\prod c_i\) 可知 \((n{-}1)!\in\{0,1\}\),而威尔逊定理告诉我们 \(n=2\) 是唯一解。

\(n\) 是合数,只需考虑 \(n=p^k\;(k\geqslant 2)\) 的情形。研究与 \(n\) 互质的数不可行,故研究不互质的。

\(p\mid a_i\lor p\mid b_i\)\(p\mid c_i\),而三种数数量相同,因此必须全部对齐。然而 \(p\mid a_i\land p\mid b_i\) 可知 \(p^2\mid c_i\),这让 \(c_i=p\) 无地自容。因此无解。

推而广之:设 \(n=p^tm\;(m\perp p)\),若 \(t\geqslant 2\) 则用上述方法考察 \(p\) 的倍数可知无解;若 \(t=1\) 则考察 \(m\) 的非零倍数(这些数会对齐),然后应有 \(\prod_{i=1}^{p-1}(im)\equiv 1\pmod{n}\),但事实上 \((p{-}1)!\cdot m^{p-1}\equiv -1\pmod{p}\) 因此只能是 \(p=2\) 。由于 \(p\) 是任取的,只有 \(n=2\) 可行。

\(\text{type 2}\)

大样例中 \(n=2p\) 有解,猜是猜不出来的。只能抄题解了。

首先 \(n\leqslant 4\) 有解,可以简单构造。下面均假定 \(n>4\)

Necessary Condition 1. \(n\) 是合数。——这是期望使用原根的尝试。

Proof. 反证法。首先 \(a_i=1\vee b_i=0\)\(c_i=1\),因此必然有 \(a_i=c_i=1\land b_i=0\) 对齐。

然后费马小定理(按:这本应该在我手玩时被发现啊)告诉我们 \(a_i\ne 0\land b_i=n-1\)\(c_i=1\),因此 \(a_i=c_i=0\land b_i=n-1\) 对齐。

\(n\) 有原根,除 \(a_i=c_i=0\land b_i=n-1\) 以外,有 \(a'_ib_i\equiv c'_i\pmod{n-1}\) 其中 \(a'_i\)\(a_i\) 的离散对数、同理定义 \(c'_i\) 。此时 \(\{a'\},\{b\},\{c'\}\) 又构成 \(\{0,1,\dots,n{-}2\}\) 的排列,由 type 1\(n=3\) 才有解。\(\blacksquare\)

Necessary Condition 2. \(n\) 无平方因子。——这是延续 type 1 中对非平凡因子的讨论。

Proof. 设 \(p^2\mid n\) 其中 \(p\) 为素数。考察 \(p\mid c_i\)\(p^2\nmid c_i\)\(c_i\) 。显然它需要 \(p\mid a_i\)\(p^2\nmid a_i\)\(b_i=1\),因此至多一个。但是 \([0,n)\) 中有 \(\frac{n}{p}-\frac{n}{p^2}=(p{-}1)\frac{n}{p^2}>1\) 个这样的 \(c_i\),矛盾。\(\blacksquare\)

Necessary Condition 3. \(n=2p\),其中 \(p\) 为奇素数。

Proof. 设 \(n=\prod_k p_k\) 。模 \(n\) 的二次剩余(按:这是怎么想到的啊喂)即在模 \(\forall p_i\) 下的二次剩余,因此有 \(\prod\lceil\frac{p_i+1}{2}\rceil\) 个。但 \(2\mid b_i\) 就得到二次剩余,因此有至少 \(\lceil\frac{n}{2}\rceil\) 个二次剩余,因此 \(p_1=2\) 且只有两个质因数是唯一解。\(\blacksquare\)

Remark:关于模素数的二次剩余数量:\(x^2\equiv y^2\pmod{p}\) 移项知 \(x\equiv y\)\(x+y\equiv 0\)

Necessary Condition 4. \(n=2p\)\((p{-}1)\) 无平方因子。——因为次方又可以转换为乘法了。

Proof. 由于模 \(n\) 的剩余系是 \(\mathbb{Z}_p\)\(\mathbb{Z}_2\) 的直积,可以分别考虑奇数和偶数。将 \(\mathbb{Z}_p\) 中零元挖掉,即不考虑 \(0\)\(p\),然后两种数都是循环群(原根存在)。各自求离散对数,则原等式又变为 \(a_i'b_i\equiv c'_i\pmod{p-1}\)\(\{a'\},\{c'\}\)\([0,p)\) 每个整数恰出现两次,而 \(\{b_i\bmod(p-1)\}\) 还多了 \(0,1\) 各一个。

\(q^2\mid(p-1)\),则有 \(q\nmid c'_i\Rightarrow q\nmid a'_i\land q\nmid b_i\) 。因此 \(q\nmid c'_i\) 会用掉所有的 \(q\nmid a'_i\) 和多数 \(q\nmid b_i\),只剩下 \(1\)\(q\nmid b_i\) 。因此剩下的 \(q\mid c'_i\)\(q\mid a'_i\),若再加以 \(q^2\nmid c'_i\)\(q\nmid b_i\),但是 \(c_i=q\) 就有两个,因而矛盾。\(\blacksquare\)

构造解

Proposition 4 中的考虑方式,我们先求离散对数。特别地,用 \(a_i=0,\;b_i=2p-2,\;c_i=0\)\(a_i=p,\;b_i=2p-1,\;c_i=p\) 将两个零元和 \(b_i\) 中多出来的 \(0,1\) 特殊处理掉。接下来我们实际上面临的问题是

Problem 1. 构造 \(\mathbb{Z}_k\mapsto\mathbb{Z}_k\) 的函数 \(f,g\) 使得 \(f,g\) 的值域的可重集并集为 “\(\mathbb{Z}_k\) 每个数出现两次” 且 \(xf(x)\)\(xg(x)\) 都构成双射。其中 \(k=p-1\) 无平方因子。

Proof. 记 \(j=\tau_0^{i}\),令 \(a_j=j,\;b_j=f(i),\;c_j=j^{f(i)}\) 。同理记 \(j=\tau_1^i\)\(a_j=j,\;b_j=g(j),\;c_j=j^{g(i)}\) 。其中 \(\tau_0,\tau_1\) 为原根。注意到此时 \(\{b\}\) 每个 \(\mathbb{Z}_k\) 内数字出现了两次,将其一加上 \((p{-}1)\) 即可。\(\blacksquare\)

\(k\) 无平方因子,设 \(k=\prod p_i\),则 \(\mathbb{Z}_k=\bigoplus\mathbb{Z}_{p_i}\),只需求解 \(\dim=1\) 的答案,最后作直积合并即可。

对于 \(\mathbb{Z}_{p_i}\),自然联想到原根。直接令 \(f(0)=0\),其余数字求出离散对数,问题又变为

Problem 2. 构造 \(\mathbb{Z}_{l}\mapsto\mathbb{Z}_{l}\) 的函数 \(f,g\) 使得 \(f,g\) 的值域的可重集并集为 “\(\mathbb{Z}_l\) 每个数出现两次” 且 \(x+f(x)\)\(x+g(x)\) 都构成双射。

考虑到 \(l=2^k\gamma\;(2\nmid\gamma)\)\(\mathbb{Z}_l=\mathbb{Z}_{2^k}\times\mathbb{Z}_{\gamma}\),其中 \(\mathbb{Z}_\gamma\) 的解 \(f(x)=g(x)=x\) 容易构造,于是我们只需构造

Problem 3. 构造 \(\mathbb{Z}_{2^k}\mapsto\mathbb{Z}_{2^k}\) 的函数 \(f,g\) 使得 \(f,g\) 的值域的可重集并集为 \(\mathbb{Z}_{2^k}\) 每个数出现两次且 \(x+f(x)\)\(x+g(x)\) 都构成双射。

我们有一种强大的构造是,令 \(f(x)\) 是以 \(x\) 为差分的二进制数。即,第 \(i\;(1\leqslant i<k)\)\(\rm bit\)\(x\) 的前 \(i\)\(\rm bit\)\(1\) 的数量。特别的,\(f(x)\) 的第 \(0\)\(\rm bit\)\(0\) 。而 \(g(x)\) 就是 \(f(x)\) 的按位取反。

显然 \(x+f(x)\) 构成双射,因为给定 \(v=x+f(x)\) 后,可以唯一地从低到高确定 \(x\)\(\rm bit\)\(g(x)\) 同理。而 \(x\) 的第 \((k{-}1)\)\(\rm bit\) 没有被使用,因此值域也恰好是 \(\mathbb{Z}_l\) 出现两次。

于是这个题就做完了。具体实现可能还有诸多细节,这里略去(这就是我喜欢口胡的原因了)。

posted @ 2022-07-01 16:58  OneInDark  阅读(68)  评论(0编辑  收藏  举报