Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tính tổng chuỗi n + nn + nnn + ... + n (m lần) trong Python

Cho số nguyên n và số hạng m. Tính tổng: n + nn + nnn + ... (m số hạng). Ví dụ: n=3, m=4 → 3 + 33 + 333 + 3333 = 3702.

Quan sát quy luật

Số hạng thứ k: giá trị trước * 10 + n.

  • term1 = n
  • term2 = term1 * 10 + n = nn
  • term3 = term2 * 10 + n = nnn
  • ...

Mã nguồn

n, m = 3, 4
term = n
total = 0

for _ in range(m):
    total += term
    term = term * 10 + n

print(total)  # 3702

Ví dụ 2: n=5, m=5

n, m = 5, 5
term = n
total = 0
for _ in range(m):
    total += term
    term = term * 10 + n
print(total)  # 61725

Cách khác: Công thức toán học

Số hạng k = n * (10^k - 1) / 9. Tổng = Σ n*(10^k-1)/9 = n/9 * (Σ10^k - m).

def series_sum_formula(n, m):
    # Σ_{k=1..m} n * (10^k - 1) / 9
    return n * (10**(m+1) - 9*m - 10) // 81

print(series_sum_formula(3, 4))  # 3702
print(series_sum_formula(5, 5))  # 61725

Kết luận

Cách lặp đơn giản, dễ hiểu, O(m). Công thức toán học O(1) nhưng dễ sai do số lớn, chia nguyên. Dùng cách lặp cho an toàn, trừ khi m rất lớn cần tối ưu.