Tổng chữ số và Ước chung lớn nhất Euclid
Trong các thuật toán mã hóa khóa công khai (RSA) được giảng dạy tại AI Empire Academy, việc tính toán tổng trọng số chữ số và ước chung lớn nhất giữa hai số nguyên là các thao tác…
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: while loop, functions, modulo.
Nội dung đề bài
Mục tiêu kiến thức
- Áp dụng vòng lặp
whileđể tách các chữ số của một số nguyên lớn mà không phụ thuộc vào chuỗi ký tự. - Cài đặt thuật toán Euclid tìm ước chung lớn nhất (GCD) với độ phức tạp O(log(min(|a|, |b|))).
- Xử lý các trường hợp số âm và giá trị 0.
Mô tả bài toán
Trong các thuật toán mã hóa khóa công khai (RSA) được giảng dạy tại AI Empire Academy, việc tính toán tổng trọng số chữ số và ước chung lớn nhất giữa hai số nguyên là các thao tác cơ bản thường dùng.
Hãy viết hàm digit_sum_and_gcd(a: int, b: int) -> tuple[int, int, int] thực hiện:
- Tính tổng các chữ số của |a| (lấy giá trị tuyệt đối).
- Tính tổng các chữ số của |b| (lấy giá trị tuyệt đối).
- Tính ước chung lớn nhất gcd(|a|, |b|) bằng thuật toán Euclid.
- Nếu cả hai số đều bằng 0 (a = 0 và b = 0), quy ước gcd(0, 0) = 0.
- Nếu một trong hai số bằng 0, gcd(0, x) = |x|.
- Trả về một
tuplegồm đúng 3 số nguyên:(tong_cs_a, tong_cs_b, gcd_ab).
Input
Hai số nguyên a, b.
Output
Một tuple[int, int, int] tương ứng: (digit_sum(a), digit_sum(b), gcd(a, b)).
Ràng buộc
- -1015 ≤ a, b ≤ 1015.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`a = 48, b = 18`Output
`(12, 9, 6)`Giải thích
- Tổng chữ số của 48 là 4 + 8 = 12.
- Tổng chữ số của 18 là 1 + 9 = 9.
- gcd(48, 18) = 6.
Ví dụ 2
Input
`a = -123, b = 0`Output
`(6, 0, 123)`Giải thích
- |-123| = 123, tổng chữ số là 1 + 2 + 3 = 6.
- |0| = 0, tổng chữ số là 0.
- gcd(123, 0) = 123.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
