Python 中通过串联 n 次来计算数字模数的程序


假设我们有一个数字 A。我们必须通过连续 n 次串联 A 生成一个大数字 X,并找到 X 模 m 的值。

因此,如果输入类似于 A = 15 n = 3 m = 8,那么输出将为 3,因为数字 x 将为 151515,且 151515 mod 8 = 3。

要解决这个问题,我们将遵循以下步骤 −

  • 如果 A 与 0 相同,则
    • 返回 0
  • an:= A
  • c:= A 中的数字位数
  • c:= 10^c
  • d:= c-1
  • newmod := d*m
  • val := (c ^ n mod newmod) -1
  • val :=(val + newmod) mod newmod
  • an :=(an * val) mod newmod
  • 返回 (an / d) 的向下取整

示例

让我们看看以下实现以获得更好的理解 −

Open Compiler
def solve(A, n, m): if A == 0: return 0 an=A c=len(str(A)) c=10**c d=c-1 newmod = d*m val = pow(c,n,newmod)-1 val = (val+newmod) % newmod an = (an*val) % newmod return an // d A = 15 n = 3 m = 8 print(solve(A, n, m))

输入

15, 3, 8

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

3

更新于: 23-Oct-2021

145 次浏览

提升你的 职业生涯

完成课程获得认证

立即开始
广告