Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาผลรวมของสตริงย่อยทั้งหมดของตัวเลขที่กำหนดเป็นสตริงใน Python


สมมติว่าเรามีตัวเลขในรูปแบบสตริง และเราต้องหาผลรวมของสตริงย่อยทั้งหมดของ s คำตอบอาจมีขนาดใหญ่มาก ดังนั้นส่งคืนผลลัพธ์ modulo 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
  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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