ProjectEuler 16

PE16:

Tính tổng các chữ số của 2 mũ 1000.

img

Một bài toán quen thuộc đối với các học viên pymivn, sau 4 buổi học dễ dàng giải bằng 1 dòng code:

>>> sum(int(i) for i in str(2**1000))

đây là ví dụ tuyệt vời để minh họa sự tiện lợi của Python:

  • dễ dàng đổi giữa các kiểu
  • list comprehension
  • tính số lớn tùy ý

Thử thách lần này là: nếu giới hạn về kết quả mọi phép tính trong bài không được lớn hơn 4 tỷ, hãy tìm đáp án của bài này?

Tức không được gõ 2**1000, hay bất kì phép tính nào xuất hiện trong code có giá trị lớn hơn 4 tỷ.

  • PS: Đây là giới hạn kích thước kiểu dữ liệu integer dương (unsigned int) trong C/C++ 2**32 == 4294967296.
  • PPS: C/C++ có kiểu unsigned long long có giá trị lớn nhất là 2**64.

Hãy tạo pull request với label #pe16 nhé. Đáp án sẽ có ở bài sau.

Đăng ký ngay tại PyMI.vn để học Python tại Hà Nội TP HCM (Sài Gòn), trở thành lập trình viên #python chuyên nghiệp ngay sau khóa học.