TCP para la OCI
El concurso nacional de la OCI es un evento esperado con ansias por todos los programadores competitivos de preuniversitario que aspiran a formar parte de la PSN, y Sora no es la excepción. Con tal de tener más tiempo para estudiar, su profesor de matemáticas, Mario, le permitió convalidar el TCP si le demostraba su conocimiento en radicales, por lo que le propuso el siguiente ejercicio.
Dado un arreglo de tamaño , debe responder consultas con la siguiente forma. Dado 3 enteros positivos y , diga la cantidad de números que cumplan las siguientes condiciones:
En la representación en factores primos (no vacía) del número, , se debe cumplir que y , o en otras palabras, cada factor primo debe tener un valor entre y (ambos inclusive) y un exponente menor o igual que .
El número debe tener raíz -ésima exacta para todo .
Se considera que un número tiene raíz -ésima exacta cuando existe un número entero tal que .
Como la cantidad de números puede ser muy grande imprima la respuesta a cada consulta módulo .
Subtareas:
Subtarea 1: , (10 puntos).
Subtarea 2: , , (15 puntos).
Subtarea 3: La suma de es menor o igual que , , , para todo (25 puntos).
Subtarea 4: (20 puntos).
Subtarea 5: Sin restricciones adicionales (30 puntos).
Entrada
La primera línea contiene un número entero , la cantidad de números del arreglo .
En la segunda línea siguen números enteros, las raíces .
La tercera línea un entero el número de consultas.
Siguen líneas cada una con 3 enteros y .
Salida
La salida debe tener líneas separadas por un salto de línea representando la respuesta a cada consulta, la cantidad de números que cumplan la condición módulo .
Ejemplo de entrada #1
1
3
4
5 5 3
20 20 2023
24 24 2024
23 23 23
Ejemplo de salida #1
1
0
0
7
En la primera consulta el único número que cumple la condición es el , porque , en la segunda y tercera consultas y no son primos así que ningún número cumple con la condición.
Ejemplo de entrada #2
3
2 3 1
3
2 4 7
2 15 5
20 28 26
Ejemplo de salida #2
3
0
4
En la primera consulta el conjunto de números que cumplen la condición es ya que todos tienen en su representación en factores primos factores entre y con un exponente menor o igual que y tienen raíz ra (el propio número, ), raíz cuadrada , , , y raíz cúbica , , exactas.
Ejemplo de entrada #3
5
2 2 2 11 23
4
5 10 2021
15 20 2022
25 45 2023
50 100 2024
Ejemplo de salida #3
15
15
1023
9765624
Comments
(Si quiere algun admin pasar este comentario a la editorial pues genial)
Esta es la via que yo halle para resolverlo por si alguien no le encuentra como hacerlo (intenten darle cabeza un rato antes de leer)
Subtarea 1
Para cada consulta: Digamos que existe un numero arbitrario con primo, y , necesariamente , por lo que primero debemos comprobar si es primo, en caso de que no lo sea reportamos 0 para esta consulta pues no existe ningun numero de los buscados, en caso contrario, verificamos el otro requisito:
Sabemos que tiene raiz -esima exacta, por lo que debe dividir al exponente de ( )
Yendo a lo que se nos pide, el problema se simplifica a: hallar la cantidad de numeros , osea la cantidad de multiplos de menores o iguales a , que no es muy dificil llegar a que son exactamente donde indica el piso o parte entera de un numero.
Tiempo:
Subtarea 2
Utilizando la idea de arriba, como sabemos que divide a (Para todo ), podemos concluir que el .
Realizamos el mismo procedimiento de la subtarea 1, pero trabajando en lugar de con , que se puede calcular en tiempo logaritmico.
Tiempo:
Subtarea 5
Por simplificar un poco lo que viene adelante digamos que
Luego, sea la cantidad de primos en el intervalo , se puede calcular en tiempo logaritmico con la criba de Eratostenes.
Utilizando (y extendiendo) la idea anterior, pensemos en el nuevo numero tambien sabemos que es valido si (y solo si) cada uno de sus exponentes es divisible por por lo mencionado arriba.
Para llegar a la solucion puedes utilizar el siguiente procedimiento:
Deberia darte una respuesta correcta, aunque se iria de tiempo.
La suma (que es la que estas calculando) te debe parecer bastante conocida, y es que es practicamente la expansion del binomio
Y en efecto, con eso puedes calcular la solucion ahorrandote todas esas sumas con: (ejercicio para el lector decir el porque del y del )
Tiempo:
Thx4Read