canuc80k5404·5/20

Đếm Nghiệm Trong Giới Hạn

Nộp bài trên LQDOJ

Bài 54 · Chinese Remainder Theorem

Mỗi bộ dữ liệu cho một giới hạn trên và điều kiện về số dư. Một số nguyên dương hợp lệ khi với mọi .

Hãy đếm bao nhiêu giá trị trong đoạn từ đến là hợp lệ.

Input

  • Dòng đầu chứa . Mỗi bộ dữ liệu gồm dòng , một dòng chứa số , rồi một dòng chứa số .

Output

  • Với mỗi bộ dữ liệu, in số lượng giá trị hợp lệ.

Constraints

  • .
  • ; .
  • ; .

Scoring

  • Subtask ( số điểm): và .
  • Subtask ( số điểm): không có giới hạn bổ sung.

Example

Test 1

Input

2
20 2
4 6
2 4
30 2
2 3
0 0

Output

1
5

Giải thích: Trong đoạn , chỉ có thỏa hai số dư của bộ đầu. Với bộ sau, các bội dương của không vượt là , nên có năm giá trị.

Lời giải tóm tắt
  • Mô hình: Với mỗi bộ dữ liệu, ta có một cận N và M điều kiện về số dư. Một số nguyên dương X hợp lệ khi X mod a_i = b_i với mọi i.
  • Mô hình: Nhiệm vụ là đếm bao nhiêu giá trị X trong đoạn từ 1 đến N là hợp lệ.
  • Thuật toán: Ghép toàn bộ hệ thành một trong hai kết quả:
  • Thuật toán: vô nghiệm: đáp án 0;
  • Thuật toán: x ≡ r (mod L), 0 <= r < L.
  • Thuật toán: Nếu r=0, các nghiệm dương là L,2L,3L,... nên có floor(N/L) nghiệm. Nếu r>0 và r<=N, các nghiệm là r,r+L,..., do đó số lượng là
  • Thuật toán: floor((N-r)/L)+1.
  • Thuật toán: Nếu r>N thì đáp án 0.
  • Chứng minh đúng đắn: EXCRT bảo đảm lớp r modulo L chứa đúng và đủ các nghiệm của hệ. Các phần tử trong lớp tăng đều L đơn vị, nên công thức đếm cấp số cộng là chính xác. Việc tách r=0 loại riêng số 0, vốn không thuộc tập số nguyên dương mà đề yêu cầu.
  • Độ phức tạp: O(M log max a_i) mỗi test; O(M) bộ nhớ.
  • Lỗi thường gặp: Dùng (N-r)/L+1 khi r=0 và vô tình đếm X=0.
  • Lỗi thường gặp: Không kiểm tra r>N.
  • Lỗi thường gặp: Cho rằng vì a_i <= 10 nên cứ vét X đến N; N có thể tới 10^9.