JavaRush /Blog Java /Random-ES /Problemas algorítmicos
Joysi
Nivel 41

Problemas algorítmicos

Publicado en el grupo Random-ES
El punto fuerte de JavaRush es la abundancia de práctica, lo que ayuda enormemente a consolidar el material impartido en las conferencias. Aquí, el 95% de las tareas se centran en la práctica de escribir programas de aplicaciones o servidores. Es fantástico practicar los materiales presentados en las conferencias (colecciones, genéricos, matrices, subprocesos múltiples, etc.) o crear y refactorizar gradualmente problemas con muchas clases y sus interacciones (las grandes). Hay problemas algorítmicos como un soplo de aire fresco (probablemente todos recuerden el último bono del nivel 20, construir una lista de árbol binario), pero su número no es grande. Esto es comprensible, el curso está dedicado a la práctica aplicada y no a la algorítmica (para lo cual se requiere mucha más teoría de la cibernética y las matemáticas). Para aquellos que son algo similares a mí en términos de distraerse un poco a veces y practicar más habilidades matemáticas en programación, les recomiendo http://codeforces.com/. Los problemas allí se pueden resolver (entre otros lenguajes de programación) en Java 7/8. Un conjunto de problemas (además de ellos, también se organizan competiciones) está disponible en http://codeforces.com/problemset. Además de ellos, hay concursos, etc. El 100% toma una decisión en un único archivo Java utilizando el paquete predeterminado (es decir, no hay ningún paquete especificado en el archivo Java) y el punto de entrada es public static void main (String[] args). No he probado otras opciones para enviar una solución. Daré un ejemplo del problema más simple (http://codeforces.com/problemset/problem/1/A) con una solución (considérelo como un ejemplo de prueba), para que pueda usarlo como espacio en blanco al resolver otros. : import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class task1A { /* Театральная площадь в столице Берляндии представляет собой прямоугольник n × m метров. По случаю очередного юбилея города, было принято решение о замощении площади квадратными гранитными плитами. Каждая плита имеет размер a × a. Какое наименьшее количество плит понадобится для замощения площади? Разрешено покрыть плитами большую поверхность, чем театральная площадь, но она должна быть покрыта обязательно. Гранитные плиты нельзя ломать o дробить, а разрешено использовать только целиком. Границы плит должны быть параллельны границам площади. Входные данные В первой строке записано три целых натуральных числа n, m и a (1 ≤ n, m, a ≤ 10^9). Выходные данные Выведите искомое количество плит. */ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] s=reader.readLine().split(" "); long n = Long.parseLong(s[0]); long m = Long.parseLong(s[1]); long a = Long.parseLong(s[2]); reader.close(); long cntSide1 = n/a + (int) Math.signum(n%a); long cntSide2 = m/a + (int) Math.signum(m%a); System.out.print(cntSide1*cntSide2); } } Después de crear el programa y probarlo usted mismo, cargue el archivo en el sitio web, la verificación comenzará pronto y podrá ver su proceso. Además, puede ver los datos de las pruebas durante el proceso de verificación y utilizarlos para corregir el programa si una de las pruebas falla. PD: Si la administración lo considera un anuncio de un recurso de terceros, puede eliminarlo. Aunque personalmente creo que el ejercicio adicional para el cerebro en términos de algoritmos no vendrá mal. PSS Si hay otros recursos similares, escriba en los comentarios (preferiblemente en forma ampliada: pros, contras y ejemplos de problemas de prueba resueltos para que otros puedan comenzar fácilmente).
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION