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

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

Tính tổng chuỗi số lặp lại chữ số: n + nn + nnn + ... (m số hạng).

Ví dụ

n = 2, m = 4
Chuỗi: 2 + 22 + 222 + 2222 = 2468

Thuật toán

  1. Chuyển n thành string
  2. Lặp m lần: mỗi lần nối thêm string n, chuyển về int, cộng vào tổng

Code

def sum_of_series(n, m):
    str_n = str(n)
    total = n
    current_str = str_n
    
    for i in range(1, m):
        current_str += str_n          # Nối chuỗi: "2" → "22" → "222"...
        total += int(current_str)     # Chuyển int và cộng
    
    return total

# Test
n = int(input("Nhập n: "))
m = int(input("Nhập m: "))
print(f"Tổng: {sum_of_series(n, m)}")

Kết quả

Nhập n: 2
Nhập m: 4
Tổng: 2468

Cách viết ngắn gọn (Pythonic)

def sum_series(n, m):
    return sum(int(str(n) * i) for i in range(1, m + 1))

print(sum_series(2, 4))  # 2468

Phân tích

  • Độ phức tạp: O(m²) do chuyển string → int mỗi lần
  • Với m lớn, có thể tối ưu bằng công thức toán học
  • Cách viết generator expression ngắn gọn, dễ đọc