LA 4998 Simple Encryption
题意:
输入正整数K1(K1≤50000),找一个12位正整数K2(不能含有前导零)使得K1^K2≡K2(mod10^12)。
思路:
神奇的数论题,怎么也想不出来,膜膜大佬的方法。
K1^K2≡K2(mod10^12),同时意味着:
K1^K2≡K2(mod10^i),i ≤12
现在我们用(abcd)表示一个四位数,用(bcd)表示它的后三位;
对于任意一个底数k;我们要证明如果 k^(abcd) = abcd(mod 1e4); 就有 k^(bcd) = bcd(mod 1e3);
显然 k^(abcd) = bcd (mod 1e3)
k^(abcd) = k^(a000) * k^(bcd) = bcd (mod 1e3)
并且根据欧拉函数的求法,有φ(10^i)=10^i*(1-1/2)*(1-1/5)=4*10^(i-1)
所以 φ(1e3) = 4*10^2
根据欧拉定理 k^ φ(1e3) = 1 (mod 1e3)
又因为 a000 是 φ(1e3) 的倍数; 所以 k^ (a000) = 1 (mod 1e3)
那么 k^(abcd) = k^(a000) * k^(bcd) = k^(bcd) = bcd (mod 1e3)
所以 如果 k^(abcd) = abcd(mod 1e4); 就有 k^(bcd) = bcd(mod 1e3);
同理,我们可以得到 如果 k^(abcd…) = abcd…(mod 1ei); 就