Đề bài
Đánh số các chữ số của n từ trái sang phải, bắt đầu từ 1. Nâng mỗi chữ số lên lũy thừa với vị trí của nó rồi cộng các kết quả lại. Ví dụ, với 352 thì là 3¹ + 5² + 2³. Chữ số 0 sẽ cộng thêm 0.
Cài đặt hàm digit_power_sum(n).
Đầu vào
n: Một số nguyên dương.
Đầu ra
Trả về tổng các chữ số sau khi nâng lũy thừa.
Ràng buộc
1 ≤ n ≤ 1,000,000,000
Ví dụ
Đầu vào:
n = 352
Kết quả mong đợi:
expected = 36
Đầu vào:
long long n = 352;
Kết quả mong đợi:
long long expected = 36;
Đầu vào:
long n = 352;
Kết quả mong đợi:
long expected = 36;
Giải thích
3¹ + 5² + 2³ = 3 + 25 + 8 = 36.
Đầu vào:
n = 89
Kết quả mong đợi:
expected = 89
Đầu vào:
long long n = 89;
Kết quả mong đợi:
long long expected = 89;
Đầu vào:
long n = 89;
Kết quả mong đợi:
long expected = 89;
Giải thích
8¹ + 9² = 8 + 81 = 89, chính là số ban đầu.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Duyệt số từng chữ số từ trái sang phải và theo dõi vị trí của từng chữ số.
Gợi ý 2
Chuyển số sang chuỗi hoặc xác định chỉ số từ trái sang phải trước khi kết hợp mỗi chữ số với vị trí của nó.
Gợi ý 3
Nhớ rằng chữ số 0 không đóng góp gì, nhưng vị trí của nó vẫn ảnh hưởng đến số mũ.
Độ phức tạp mong đợi
thời gian O(d), bộ nhớ phụ O(1)