Comunicación Numérica

Time Limit:
1 Sec
Memory Limit:
128Mb
Enviados:
0
Resuelto:
0
Enviar IDE Estado

Descripción

Se te dará un arreglo \(A\) de \(N\) enteros y se te harán \(Q\) preguntas. En cada pregunta se darán dos enteros \(i\) y \(j\) \((0 \le i, j < N,\ i \neq j)\) que representan dos índices distintos del arreglo.

Tu tarea es verificar si puedes transformar el valor \(A_i\) al valor \(A_j\) mediante una o varias operaciones de este tipo. Un número \(A_a\) solo puede transformarse a otro número que esté en el arreglo \(A_b\) siguiendo alguna de estas operaciones:

  • \(A_a \cdot x = A_b\), con \(x\) un entero positivo.
  • \(A_a/x = A_b\), con \(x\) un entero positivo.
  • \(A_a/u = p\) y \(p \cdot v = A_b\), con \(u\) y \(v\) enteros positivos y \(p\) primo.

Por ejemplo, si tuviéramos el arreglo

\[A = 8,\ 23,\ 48,\ 22,\ 100,\ 289,\ 385,\ 6,\ 9,\ 4,\ 15,\ 3,\ 11,\ 10,\ 26\]

con índices 0 a 14 respectivamente:

Si nos pidieran transformar \(A_3 = 22\) a \(A_{12} = 11\), se puede seguir: \(22/2 = 11\).

Si nos pidieran transformar \(A_0 = 8\) a \(A_7 = 6\), se puede seguir: \(8/4 = 2\) y \(2 \cdot 3 = 6\).

Si nos pidieran transformar \(A_{14} = 26\) a \(A_6 = 385\), se puede seguir, por ejemplo: \(26/13 = 2\) y \(2 \cdot 5 = 10\) (\(A_{13} = 10\) es un número del arreglo y 2 es primo), y luego \(10/2 = 5\) y \(5 \cdot 77 = 385\).

Entrada

La primera línea contiene un entero \(N\) \((2 \le N \le 10^5)\): la cantidad de elementos del arreglo.

La segunda línea contiene \(N\) enteros \(A_0, A_1, \ldots, A_{N-1}\) \((1 \le A_i \le 10^7)\).

La tercera línea contiene un entero \(Q\) \((1 \le Q \le 10^5)\): la cantidad de preguntas.

Luego siguen \(Q\) líneas, cada una con dos enteros \(i\), \(j\) \((0 \le i, j < N,\ i \neq j)\).

Salida

Para cada pregunta, imprime una línea con “SI” si \(A_i\) se puede transformar en \(A_j\), o “NO” en caso contrario.

Ejemplo Entrada

Copy icon
5
4 7 10 2 3
3
0 2
1 2
0 4

Ejemplo Salida

Copy icon
SI
NO
NO

Ayuda