Editorial for Buen Equipo
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Definamos y
. Ła respuesta sería
.
Veamos primero cómo calcular . Notemos que para cada
, se cumple que
.
Por tanto, podemos iterar entre cada par de cubos consecutivos
y añadir la raíz cúbica del menor de cada uno (
) tantas veces como números hay entre ellos. Debemos tener cuidado en el último par de cubos, cuando el límite superior supera
.
La misma idea se puede aplicar para calcular . En este caso, para cada
se cumple que
. Por tanto podemos iterar por cada par de cuadrados consecutivos y añadir la raíz cuadrada del mayor de cada uno tantas como números hay entre ellos. Aquí debemos tener cuidado cuando el límite superior de cada rango supera a
.
Con todo lo anteriormente dicho:
La complejidad temporal está dominada por cómo calculamos , ya que
. Entonces sería
.
Código de ejemplo:
#include<bits/stdc++.h>
using namespace std;
long long sq(long long x){ return x * x; }
long long cub(long long x){ return x * x * x; }
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
long long n;
cin >> n;
long long a = 0, b = 0;
for(long long i = 1; cub(i) <= n; i++)
a += i * (min(n + 1, cub(i + 1)) - cub(i));
for(long long i = 0; sq(i) <= n; i++)
b += (min(n, sq(i+1)) - sq(i)) * (i + 1);
cout << a + b;
return 0;
}
Comments
Hi, el problema tambien puede ser resuelto en
utilizando una formula (esta mas abajo), para llegar a ella hay que analizar:
Te piden la suma de todos los elementos de un arreglo
, donde cada posicion
contiene
. En otras palabras, la solucion es:
Lo que nos permite analizar por separado:
![\displaystyle \sum _{i=1} ^{N} \lceil \sqrt i \rceil + \sum _{i=1} ^{N} {\lfloor \sqrt[3] i \rfloor}](/static/blank.b44917055649.gif)
Si se observa la grafica o solamente los valores va a aparecer algo asi:
Osea los numeros se van a ir repitiendo. Pero se van a ir repitiendo segun un patron, el 1 se repite 1 vez, el 2 se repite 3 veces, y asi, al N-esimo numero se repite
veces (es sencillo demostrarlo). Siguiendo con la idea, necesitamos sumarlos:
Donde
es la raiz del cuadrado inmediatamente inferior a N, osea
, por lo que nos falta sumarle el intervalo que se nos queda
Y con eso listo por esta parte.
Procedemos igual que en el paso anterior, los valores son
, hay
numeros N (no confundir con
, de la entrada), puedes comprobarlo si quieres, luego:

Con
. Y agregamos lo que nos quedaba al igual que ahorita:
. Y listo, juntando todo hasta aca queda la solucion:
(No sustituyan
y
porque da miedo).
Mi codigo:
(sorry, tenía un error en la parte de
, ya lo arreglé cualquier error diganme)