在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