cpp-024Đọc toàn bộ đề miễn phí

Lũy thừa nhị phân nhanh và Sàng số nguyên tố Eratosthenes

Hệ thống mã hóa trọng số mô hình AI của AI Empire Academy yêu cầu xử lý hai phép toán số học nền tảng:

C++Trung bình35 phút

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ủ đề

number theorybinary exponentiationsieve of eratosthenesmath

Kiến thức tiên quyết: loops, functions, bitwise operators.

Nội dung đề bài

Mục tiêu kiến thức

  • Cài đặt thuật toán Lũy thừa nhị phân (Binary Exponentiation) tính (AB) mod M trong O(log B).
  • Cài đặt thuật toán Sàng số nguyên tố Eratosthenes tối ưu với std::vector<bool> trong O(N log log N).
  • Xử lý phép nhân modulo an toàn: (1LL * a * b) % M tránh tràn số nguyên 32-bit.

Mô tả bài toán

Hệ thống mã hóa trọng số mô hình AI của AI Empire Academy yêu cầu xử lý hai phép toán số học nền tảng:

  • Mã hóa lũy thừa nhanh: Cho 2 số nguyên A và B (0 ≤ A, B ≤ 1018). Hãy tính giá trị:

(AB) mod (109 + 7) với quy ước toán học 00 = 1.

  • Đếm khóa nguyên tố: Cho số nguyên dương K (1 ≤ K ≤ 107). Hãy đếm xem có tổng cộng bao nhiêu số nguyên tố nằm trong đoạn [1, K].

Quy ước nộp bài

  • Chỉ cần viết một chương trình đọc stdin và in ra stdout. Bài này không yêu cầu viết hàm.
  • Không dùng cout để in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vào stdout và làm bài sai.
  • Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
  • Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.

Input

Dữ liệu đầu vào gồm 2 dòng:

  • Dòng 1: Gồm 2 số nguyên A và B (0 ≤ A, B ≤ 1018).
  • Dòng 2: Một số nguyên dương K (1 ≤ K ≤ 107).

Output

In ra 2 dòng:

  • Dòng 1: Một số nguyên là kết quả của (AB) mod (109 + 7).
  • Dòng 2: Một số nguyên là số lượng số nguyên tố trong đoạn [1, K].

Ràng buộc

  • 0 ≤ A, B ≤ 1018.
  • 1 ≤ K ≤ 107.
  • Thời gian chạy: 1000ms.
  • Bộ nhớ tối đa: 256MB.

Ví dụ 1

Input

3 10
20

Output

59049
8

Giải thích

  • Dòng 1: 310 = 59049. 59049 mod (109 + 7) = 59049.
  • Dòng 2: Các số nguyên tố trong đoạn [1, 20] là {2, 3, 5, 7, 11, 13, 17, 19} (tổng cộng 8 số).

Ví dụ 2

Input

2 30
10

Output

73741817
4

Giải thích

  • 230 = 1073741824. 1073741824 mod (109 + 7) = 73741817.
  • Trong đoạn [1, 10] có 4 số nguyên tố {2, 3, 5, 7}.
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.