Decryption

View as PDF

Points: 10 (p) Time limit: 1.0s Memory limit: 256M Input: GMK.INP Output: GMK.OUT

Bạn \(S\) là thành viên của 1 CLB lập trình. Trong một cuộc thi, \(S\) đã đại diện cho CLB của mình đi thi và đạt được giải nhất. Ban tổ chức đã tặng \(S\) một laptop mới để học lập trình, tuy nhiên \(S\) cần giải câu đố của chương trình để có được mật khẩu đăng nhập vào laptop đó và cần các bạn giúp giải quyết.
Ban tổ chức cho \(S\) gợi ý là:

  • \(N\) là độ dày dãy số \((N ≤ 10^6)\)
  • Dãy \(A\) gồm \(N\) số là dãy gợi ý \((A_i ≤ 10^6)\)
  • \(T\) là số truy vấn tạo ra dãy mật khẩu \((T ≤ 5*10^5)\)
  • \(T\) cặp \((X, P)\) là cách xử lí mật khẩu \((X, P ≤ 5 * 10^5)\)
    Mật khẩu là dãy số khi lấy tích của dãy số \(A\) và kiểm tra xem nó có chia hết cho \(X^P\) không. Nếu chia hết in ra \(1\) ngược lại in ra \(0\).

Yêu cầu: Hãy giúp S tìm mật khẩu đăng nhập.

Input:

  • Dòng đầu tiên ghi số \(N\).
  • Dòng 2 ghi \(N\) số \(A_i\).
  • Dòng 3 ghi số \(T\).
  • \(T\) dòng tiếp theo mỗi dòng ghi 1 cặp số \((X, P)\).

Output:

  • Gồm 1 dòng duy nhất là mật khẩu cần tìm
Sample
Input
5
1 2 3 4 5
4
5 1
2 3
3 4
15 2
Output
1100

Giải thích:

Trong ví dụ trên, \(A = 1 * 2 * 3 * 4 * 5 = 120\), có tất cả 4 truy vấn:

  • Truy vấn 1, \(X = 5, P = 1\)\(A = 120\) chia hết cho \(5^1 = 5\), in ra 1.
  • Truy vấn 2, \(X = 2, P = 3\)\(A = 120\) chia hết cho \(2^3 = 8\), in ra 1.
  • Truy vấn 3, \(X = 3, P = 4\)\(A = 120\) không chia hết cho \(3^4 = 81\), in ra 0.
  • Truy vấn 4, \(X = 15, P = 2\)\(A = 120\) không chia hết cho \(15^2 = 225\), in ra 0.
    \(=>\) \(1100\) là mật khẩu cần tìm.

Gợi ý:

  • Mật khẩu là một dãy bit ""đây là phần thừa do tác giả tự bịa ra =))""

Comments