LA 4998 Simple Encryption (数论 dfs)

博客介绍了如何解决LA 4998 Simple Encryption问题,利用数论和深度优先搜索(DFS)的方法找到满足条件的12位正整数K2。通过数学分析证明了K1的幂次与K2模10^i的关系,并提出从后向前寻找满足条件的数位策略。
摘要由CSDN通过智能技术生成

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); 就

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值