在Python中查找作为字符串给定的数字的所有子字符串的总和的程序

在Python中查找作为字符串给定的数字的所有子字符串的总和的程序

假设我们有一个以字符串格式给出的数字,我们必须查找s的所有子字符串的总和。结果可能非常大,因此以10^9+7为模返回结果。

因此,如果输入为s =“268”,则输出将为378,因为子字符串为“2”,“6”,“8”,“26”,“68”和“268”,总和为378。

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

  • M := 10^9 + 7
  • sum_val:= 0
  • B := 1
  • res:= 0
  • 对于i在范围为s的大小减1到0的范围内,逐渐减少1,执行以下操作
    • res:=(res + s [i]的数字值* B*(i + 1))mod M
    • sum_val:= sum_val-s [i]的数字值
    • B:=(B * 10 + 1)mod M
  • 返回res

示例

让我们看以下实现以更好地理解−

def solve(s):
    M = 10 ** 9 + 7
    sum_val = 0
    B = 1
    res = 0
    for i in range(len(s) - 1, -1, -1):
        res = (res + int(s[i]) * B * (i + 1)) % M
        sum_val -= int(s[i])
        B = (B * 10 + 1) % M
    return res

s = "268"
print(solve(s))

输入

"268"

输出

378

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程