恶心构造数学题
淦,之前对 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\) 出现两次。
于是这个题就做完了。具体实现可能还有诸多细节,这里略去(这就是我喜欢口胡的原因了)。
如果这篇文章对你有帮助,那么作者是:OneInDark,原文在:https://www.cnblogs.com/OneInDark/p/16435268.html,否则我也不知道这是谁的文章。