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
- Chuyển n thành string
- 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