用 Python 编写程序,求出给定字符串数字的所有子字符串的总和

pythonserver side programmingprogramming更新于 2025/12/12 23:08:17

假设我们有一个字符串格式的数字,我们需要求出 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

相关文章


有用资源