Maratona de Programação da SBC 2017

Documentos relacionados
Maratona de Programação da SBC 2015

Maratona de Programação da SBC 2013

Maratona de Programação da SBC 2015

Maratona de Programação da SBC 2014

Torneio Estudantil de Computação Multi-Linguagem de Aveiro. Escola Superior de Tecnologia e Gestão de Águeda Universidade de Aveiro TECLA 2009

OBI2017 Caderno de Tarefas

Maratona de Programação da SBC 2017

Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA EXERCÍCIOS E CONSTRUÇÃO DE PROGRAMAS SEQUENCIAIS. Prof. Dr. Daniel Caetano

Vetores Unimensionais

Aula 10: Manipulação do fluxo de laços

LISTA DE EXERCÍCIOS 2

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Aula 11: Laços e exercícios

Estruturas de Repetição e String. Vanessa Braganholo

Vetores Unimensionais

Algoritmos I Aula 14 Java: estruturas de seleção e repetição

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Vetores Unimensionais

Aula 14: Funções Passagem de Parâmetros por Referência

Introdução à programação competitiva. Professor Tomás O. Junco Vázquez

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

Aula 8: Estruturas de Repetição: O comando while

ESTRUTURA COM DECISÃO COMPOSTA

Aula 05: Condicionais (Parte 2)

Seleção Múltipla Laços (while, do-while, for) AULA 05

GEQ Prof. Paulo R. Coelho. Lista para prova

Puca Huachi Vaz Penna / José Américo T. Messias

Maratona de Programação da SBC 2016

Maratona de Programação da SBC 2014

Variáveis Compostas. Vanessa Braganholo

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

public class ExecScanner1 { public static void main(string[] args) { // TODO code application logic here

Estruturas de Repetição e String

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Lista de Exercícios I. 01. Desenvolva um programa em Java que receba três valores numéricos inteiros e mostre a soma desses três números.

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

ITENS FUNDAMENTAIS Programando em C++

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA II

Programação de Computadores para GI

Estruturas de Repe,ção e String

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C/C++ Estrutura Condicional. Prof: Rosemary Melo

Linguagem de programação Java

Aula 6: Comandos Estruturados Estrutura Condicional

Fundamentos de Programação

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2007/2008

Maratona de Programação da SBC 2011

Aula 27: Estruturas heterogêneas e alocação dinâmica

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

OBI2016 Caderno de Tarefas

Operações com Arquivos

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Orientação a Objetos e Java

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

Algoritmos e Programação

Caderno de Problemas

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Linguagem C: Introdução

Aula 28: Arquivos de texto

OBI2016 Caderno de Tarefas

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Sintaxe Básica de Java Parte 2

Transcrição:

International Collegiate acm Programming Contest 2017 event sponsor Maratona de Programação da SBC 2017 Sub-Regional Brasil do ACM ICPC 9 de Setembro de 2017 Aquecimento Informações Gerais Este caderno contém problemas; as páginas estão numeradas de 1 a 4, não contando esta página de rosto. Verifique se o caderno está completo. A) Sobre os nomes dos programas 1) Sua solução deve ser chamada codigo de problema.c, codigo de problema.cpp, codigo de problema.pas, codigo de problema.java ou codigo de problema.py, onde codigo de problema é a letra maiúscula que identifica o problema. Lembre que em Java o nome da classe principal deve ser igual ao nome do arquivo. B) Sobre a entrada 1) A entrada de seu programa deve ser lida da entrada padrão. 2) A entrada é composta de um único caso de teste, descrito em um número de linhas que depende do problema. ) Quando uma linha da entrada contém vários valores, estes são separados por um único espaço em branco; a entrada não contém nenhum outro espaço em branco. 4) Cada linha, incluindo a última, contém exatamente um caractere final-de-linha. 5) O final da entrada coincide com o final do arquivo. C) Sobre a saída 1) A saída de seu programa deve ser escrita na saída padrão. 2) Quando uma linha da saída contém vários valores, estes devem ser separados por um único espaço em branco; a saída não deve conter nenhum outro espaço em branco. ) Cada linha, incluindo a última, deve conter exatamente um caractere final-de-linha. Promoção: v1.0

Maratona de Programação da SBC ACM ICPC 2017 1 Problema A Fatorial O fatorial de um número inteiro positivo N, denotado por N!, é definido como o produto dos inteiros positivos menores do que ou iguais a N. Por exemplo 4! = 4 2 1 = 24. Dado um inteiro positivo N, você deve escrever um programa para determinar o menor número k tal que N = a 1! + a 2! +... + a k!, onde cada a i, para 1 i k, é um número inteiro positivo. Por exemplo, para N = 10 a resposta é, pois é possível escrever N como a soma de três números fatoriais: 10 =! + 2! + 2!. Para N = 25 a resposta é 2, pois é possível escrever N como a soma de dois números fatoriais: 25 = 4! + 1!. A entrada consiste de uma única linha que contém um inteiro N (1 N 10 5 ). Seu programa deve produzir uma única linha com um inteiro representando a menor quantidade de números fatoriais cuja soma é igual ao valor de N. 10 25 2

Maratona de Programação da SBC ACM ICPC 2017 2 Problema B Jogo de Estratégia Um jogo de estratégia, com J jogadores, é jogado em volta de uma mesa. O primeiro a jogar é o jogador 1, o segundo a jogar é o jogador 2 e assim por diante. Uma vez completada uma rodada, novamente o jogador 1 faz sua jogada e a ordem dos jogadores se repete novamente. A cada jogada, um jogador garante uma certa quantidade de Pontos de Vitória. A pontuação de cada jogador consiste na soma dos Pontos de Vitória de cada uma das suas jogadas. Dado o número de jogadores, o número de rodadas e uma lista representando os Pontos de Vitória na ordem em que foram obtidos, você deve determinar qual é o jogador vencedor. Caso mais de um jogador obtenha a pontuação máxima, o jogador com pontuação máxima que tiver jogado por último é o vencedor. A entrada consiste de duas linhas. A primeira linha contém dois inteiros J e R, o número de jogadores e de rodadas respectivamente (1 J, R 500). A segunda linha contém J R inteiros, correspondentes aos Pontos de Vitória em cada uma das jogadas feitas, na ordem em que aconteceram. Os Pontos de Vitória obtidos em cada jogada serão sempre inteiros entre 0 e 100, inclusive. Seu programa deve produzir uma única linha, contendo o inteiro correspondente ao jogador vencedor. 1 1 1 1 2 2 2 2 0 0 1 0 2 0 1

Maratona de Programação da SBC ACM ICPC 2017 Problema C Teleférico A turma da faculdade vai fazer uma excursão na serra e todos os alunos e monitores vão tomar um teleférico para subir até o pico de uma montanha. A cabine do teleférico pode levar C pessoas no máximo, contando alunos e monitores, durante uma viagem até o pico. Por questão de segurança, deve haver pelo menos um monitor dentro da cabine junto com os alunos. Por exemplo, se cabem C = 10 pessoas na cabine e a turma tem A = 20 alunos, os alunos poderiam fazer três viagens: a primeira com 8 alunos e um monitor; a segunda com 6 alunos e um monitor; e a terceira com 6 alunos e um monitor. Dados como entrada a capacidade C da cabine e o número total A de alunos, você deve escrever um programa para calcular o número mínimo de viagens do teleférico. Se você estiver com muita preguiça hoje, não se preocupe: virando a página você encontra soluções para este problema. A primeira linha da entrada contém um inteiro C, representando a capacidade da cabine (2 C 100). A segunda linha da entrada contém um inteiro A, representando o número total de alunos na turma (1 A 1000). Seu programa deve imprimir uma linha contendo um número inteiro representando o número mínimo de viagens do teleférico para levar todos os alunos até o pico da montanha. 10 20 12 55 5 Exemplo de entrada 100 87 Exemplo de saída 1

Maratona de Programação da SBC ACM ICPC 2017 4 Solução em C++ #include <iostream> using namespace std; int main(void){ int C,A; cin >> C >> A; // le a entrada int quociente = A/(C-1); int resto = A%(C-1); int resposta = quociente; if ( resto > 0 ) resposta++; cout << resposta << endl; // escreve a resposta return 0; Solução em Python C = int(input()) # le a entrada A = int(input()) quociente, resto = A/(C-1), A%(C-1) resposta = quociente if resto>0: resposta += 1 print(resposta) # escreve a resposta Solução em Java import java.util.scanner; public class C { public static void main(string[] args) { Scanner in = new Scanner(System.in); int quociente, resto, resposta; int C,A; C=in.nextInt(); // le a entrada A=in.nextInt(); quociente=a/(c-1); resto=a%(c-1); resposta=quociente; if (resto>0) resposta=resposta+1; System.out.println(resposta); // imprime a resposta