JavaRush /Blogue Java /Random-PT /Problemas algorítmicos
Joysi
Nível 41

Problemas algorítmicos

Publicado no grupo Random-PT
O ponto forte do JavaRush é a abundância de prática, o que ajuda muito a consolidar o material ministrado nas palestras. Aqui, 95% das tarefas estão focadas na prática de escrever programas aplicativos ou servidores. É ótimo praticar os materiais apresentados nas aulas (coleções, genéricos, arrays, multithreading, etc.) ou criar e refatorar gradativamente problemas com muitas classes e suas interações (grandes). Existem problemas algorítmicos como uma lufada de ar fresco (todos provavelmente se lembram do último bônus do nível 20, construindo uma lista de árvores binárias), mas seu número não é grande. Isso é compreensível, o curso é dedicado à prática aplicada, e não à algorítmica (o que requer muito mais teoria da cibernética e da matemática). Para aqueles que são parecidos comigo em termos de às vezes se distrair um pouco e praticar mais habilidades matemáticas em programação, recomendo http://codeforces.com/. Os problemas podem ser resolvidos (entre outras linguagens de programação) em Java 7/8. Um conjunto de problemas (além deles também são organizadas competições) está disponível em http://codeforces.com/problemset. Além deles, existem competições, etc. 100% toma uma decisão em um único arquivo java usando o pacote padrão (ou seja, não há nenhum pacote especificado no arquivo java) e o ponto de entrada é public static void main(String[] args). Não tentei outras opções para enviar uma solução. Darei um exemplo do problema mais simples (http://codeforces.com/problemset/problem/1/A) com uma solução (considere-o como um exemplo de teste), para que você possa usá-lo como espaço em branco ao resolver outros : import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class task1A { /* Театральная площадь в столице Берляндии представляет собой прямоугольник n × m метров. По случаю очередного юбилея города, было принято решение о замощении площади квадратными гранитными плитами. Каждая плита имеет размер a × a. Какое наименьшее количество плит понадобится для замощения площади? Разрешено покрыть плитами большую поверхность, чем театральная площадь, но она должна быть покрыта обязательно. Гранитные плиты нельзя ломать or дробить, а разрешено использовать только целиком. Границы плит должны быть параллельны границам площади. Входные данные В первой строке записано три целых натуральных числа 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); } } Após criar o programa e testá-lo você mesmo, carregue o arquivo no site, a verificação começará em breve e você poderá acompanhar seu processo. Além disso, você pode visualizar os dados do teste durante o processo de verificação e usá-los para corrigir o programa se um dos testes falhar. PS Se a administração considerar que é um anúncio de recurso de terceiros, você pode excluí-lo. Embora eu pessoalmente ache que exercícios adicionais para o cérebro em termos de algoritmos não farão mal. PSS Se houver outros recursos semelhantes, escreva nos comentários (de preferência expandidos - prós, contras e exemplos de problemas de teste resolvidos para um início fácil para outros).
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION