• Nenhum resultado encontrado

247 Círculos de Ligação

N/A
N/A
Protected

Academic year: 2021

Share "247 Círculos de Ligação"

Copied!
7
0
0

Texto

(1)

247 – Círculos de Ligação

Se você já viu comerciais de companhias telefônicas, você deve ter notado que muitas

companhias gastam muito dinheiro tentando convencer as pessoas que elas proveem o

melhor serviço e com o menor preço. Uma companhia possui “círculos de ligação”: você

provê uma lista de pessoas com quem você conversa frequentemente e se você ligar para

alguém no seu círculo de ligação (que também seja um cliente da mesma companhia), você

pagará muito menos do que se estivesse ligando para alguém de fora do seu círculo.

Outra companhia destacou que você só receberá grandes descontos se ligar para pessoas no

seu círculo e se você começar a ligar para outras pessoas com mais frequência, caberá a você

adicioná-las ao seu círculo de ligações.

A companhia LibertyBell Phone é a nova companhia que alega ter o melhor plano de

ligações que poderá tirar as outras companhias do negócio. LibertyBell tem círculos de

ligação, a diferença é que a companhia estabelece automaticamente o seu círculo de

ligações. Isto funciona da seguinte maneira: LibertyBell mantém o registro de todas as suas

ligações. Além de você mesmo, seu círculo de ligações consiste de todas as pessoas para

quem você liga e também te ligam (direta ou indiretamente). Por exemplo, se Ben liga para

Alexander, Alexander liga para Dolly, e Dolly liga para Ben, eles estarão todos no mesmo

círculo. Se Dolly também ligar para Benedict e Benedic ligar para Dolly, então, Benedict

estará no mesmo círculo de ligações de Dolly, Ben e Alexander. Finalmente, se Alexander

liga para Aaron, mas Aaron não liga para Alexander, Ben, Dolly ou Benedict, então Aaron

não estará no círculo.

Você foi contratado pela LibertyBell para escrever um programa que determine os círculos

de ligação dado o registro de ligações entre pessoas.

Entrada

A entrada conterá um ou mais casos de teste. Cada caso de teste inicia com uma linha

contendo dois inteiros, n e m. O primeiro inteiro, n, representa o número de diferentes

pessoas que estão no caso de teste. O valor máximo para n é 25. O restante do caso de teste

conterá m linhas, cada uma representando uma ligação telefônica. Cada ligação é

representada por dois nomes, separados por um único espaço em branco. Cada nome é

composto por uma única palavra, formada por caracteres alfabéticos com no máximo 25

letras. Por exemplo, se Ben ligou para Dolly, então esta ligação será representada como

“Ben Dolly”. A entrada deste problema será encerrada com dois valores zero (0) para n e m.

Saída

Para cada caso de teste, imprimia uma linha de cabeçalho indicando o número do caso de

teste, seguida por uma linha com cada círculo de ligação no caso de teste. Cada uma dessas

linhas deverá conter o nome de todas as pessoas (em qualquer ordem) dentro do círculo,

separadas por uma vírgula e um espaço em branco.

(2)

Exemplo de Entrada

5 6 Ben Alexander Alexander Dolly Dolly Ben Dolly Benedict Benedict Dolly Alexander Aaron 14 34 John Aaron Aaron Benedict Betsy John Betsy Ringo Ringo Dolly Benedict Paul John Betsy John Aaron Benedict George Dolly Ringo Paul Martha George Ben Alexander George Betsy Ringo Alexander Stephen Martha Stephen Benedict Alexander Stephen Paul Betsy Ringo Quincy Martha Ben Patrick Betsy Ringo Patrick Stephen Paul Alexander Patrick Ben Stephen Quincy Ringo Betsy Betsy Benedict Betsy Benedict Betsy Benedict Betsy Benedict Betsy Benedict Betsy Benedict Quincy Martha 0 0

Exemplo de Saída

Calling circles for data set 1: Ben, Alexander, Dolly, Benedict Aaron

Calling circles for data set 2: John, Betsy, Ringo, Dolly Aaron

Benedict

Paul, George, Martha, Ben, Alexander, Stephen, Quincy, Patrick

(3)

550 – Multiplicando por Rotações

Aviso: nem todos os números deste problema são decimais!

A multiplicação de números naturais, em geral, é uma operação enfadonha. Porém, em

alguns casos, o produto pode ser obtido movendo-se o último dígito para a frente.

Exemplo: 179487 * 4 = 717948

É claro que esta propriedade depende da representação numérica usada. No exemplo

acima foi utilizada a representação decimal. Na base 9 há um exemplo mais curto:

17 * 4 = 71 (base 9)

sendo (9 * 1 + 7) * 4 = 7 * 9 + 1

Entrada

Cada linha da entrada consistirá de três números separados por um espaço em branco:

a base do sistema numérico, o dígito menos significante do primeiro fator, e o segundo

fator. Este segundo fator é composto por um único dígito (e menor do que a base). A

entrada é encerrada por um “fim de arquivo”.

Saída

Seu programa deverá determinar para cada linha da entrada o número de dígitos do

menor fator com a propriedade da multiplicação rotativa. Para cada linha de entrada

imprimia uma linha com este número de dígitos.

Exemplo de Entrada

10 7 4 9 7 4 17 14 12

Exemplo de Saída

6 2 4

(4)

573 – A Lesma

Uma lesma está na base (fundo) de um poço e deseja escalá-lo até o topo. A lesma pode escalar 3 pés durante o dia, mas desliza um pé enquanto dorme. A lesma tem um fator de fadiga de 10%, significando que a cada dia consecutivo de escalada ela escala 10% x 3 = 0,3 pés a menos do que no dia anteiro (os 10% são sempre calculados em relação à altura que ela consegue escalar no primeiro dia). Em que dia a lesma conseguirá escalar o poço? Por exemplo, quando a lesma conseguirá passar por um poço de 6 pés de altura? (um dia consiste de um período de sol mais o período da noite). Como pode ser visto na tabela a seguir, a lesma passa dos 6 pés durante o terceiro dia.

Dia Altura Inicial Distância Percorrida Altura Após Escalada 1 0' 3' 3' 2 2' 2.7' 4.7' 3 3.7' 2.4' 6.1'

Seu trabalho é resolver o problema geral de escalada da lesma. Dependendo dos parâmetros, a lesma conseguirá escalar o poço ou irá, eventualmente, escorregar até a base do poço. Isto é, a altura atingida pela lesma irá superar a altura do poço ou irá cair até ficar negativa. Você deverá identificar o que ocorrerá primeiro e em que dia.

Entrada

A entrada consistirá de um ou mais casos de teste. Cada caso em uma linha. Cada linha conterá quatro inteiros H, U, D e F, separados por um único espaço em branco. A entrada será encerrada com H recebendo o valor zero. Caso contrário, todos os números receberão valores entre 1 e 100. H é a altura do poço em pés, U é a distância em pés que a lesma consegue escalar durante o dia, D é a distância em pés que a lesma escorrega durante a noite, e F é o fator de fadiga expresso em porcentagem. A lesma nunca escala uma distância negativa. Se o fator de fadiga levar a distância escalada para um valor negativo então a lesma não escalará nada durante o dia. Independente do quanto a lesma escale em um dado dia, ela sempre escorregará D pés durante a noite.

Saída

Para cada caso de teste, imprima uma linha indicando se a lesma conseguiu deixar o poço ou falhou (escorregou de volta para o fundo) e em que dia isso aconteceu. O formato deve ser idêntico ao dos exemplos a seguir.

Exemplo de Entrada

6 3 1 10 10 2 1 50 50 5 3 14 50 6 4 1 50 6 3 1 1 1 1 1 0 0 0 0

Exemplo de Saída

success on day 3 failure on day 4 failure on day 7 failure on day 68 success on day 20 failure on day 2

(5)

628 – Senhas

Alguém que tem diversas contas em vários servidores precisa se lembrar de várias senhas. De vez em quando essa pessoa esquece suas senhas. Imagine que ela se lembra apenas que a senha é composta pelas palavras x, y, z e por dois dígitos: um no começo e outro no final da senha.

Sua tarefa é escrever um programa que irá gerar todas as senhas possíveis com base num dicionário dado e um conjunto de regras. Para o exemplo dado acima, o dicionário contém três palavras: x, y, z e a regra dada é 0#0 que significa <digit><word_from_the_dictionary><digit>.

Entrada

A primeira linha contém o número de palavras no dicionário (n). As palavras propriamente ditas serão dadas nas n linhas consecutivas. A linha seguinte conterá o número de regras (m). Similarmente, as m linhas consecutivas conterão as regras. Cada regra consiste de caracteres “#” e “0” em um ordem arbitrária. O caractere “#” significa uma palavra do dicionário enquanto que o caractere “0” significa um dígito.

A entrada pode ser composta por diversos dicionários com regras associadas a eles.

Saída

Para cada conjunto “dicionário + regras” você deverá imprimir dois hifens seguidos por um enter e todas as senhas possíveis nas linhas consecutivas. As senhas deverão ser ordenadas pelas regras, isto é, primeiro todas as senhas que satisfazem a primeira regra, seguidas por aquelas que satisfazem a segunda, etc. Dentro do conjunto de senhas que satisfazem uma regra, elas devem ser ordenadas em ordem ascendente.

Assuma que: o número de palavras no dicionário é maior que zero e menor ou igual a 100. O

tamanho de cada palavra é maior que zero e menor que 256. Uma palavra pode conter os seguintes caracteres: “A”..“Z”, “a”..“z”, “0”..“9”. O número de regras será menor que 1000, e uma regra terá menos que 256 caracteres. Um caractere “0” pode ocorrer numa regra no máximo 7 vezes, mas irá ocorrer ao menos uma vez. É possível a existência de regras sem a presença do caractere “#”.

Exemplo de Entrada 2 root 2super 1 #0 1 admin 1 #0# Exemplo de Saída -- root0 root1 root2 root3 root4 root5 root6 root7 root8 root9 2super0 2super1 2super2 2super3 2super4 2super5 2super6 2super7 2super8 2super9 -- admin0admin admin1admin admin2admin admin3admin admin4admin admin5admin admin6admin admin7admin admin8admin admin9admin

(6)

871 – Contando Células

Conhecimento Geral

Considere um grid bidimensional de células, cada uma podendo estar vazia ou preenchida. Células preenchidas formam bolhas. Células preenchidas adjacentes formam uma bolha maior. Duas células são consideradas adjacentes se elas forem conectadas na horizontal, vertical ou diagonal. Poderá haver diversas bolhas no grid. Seu trabalho é encontrar a maior bolha (em termos de número de células) no grid.

A seguinte figura ilustra um grid com três bolhas (a maior contém cinco células)

Problema:

Escreva um programa que determine o tamanho da maior bolha para um dado conjunto de bolhas.

Entrada:

A entrada iniciará com um inteiro positivo indicando o número de casos de teste. Cada caso de teste é descrito a seguir. A linha inicial é seguida por uma linha em branco e também haverá uma linha em branco entre dois casos de teste consecutivos.

O grid é passado como um conjunto de strings, cada uma composta por zeros e uns. O valor 1 indica que a célula está preenchida e o valor 0 indica que a célula está vazia. O maior grid possível terá tamanho 25 x 25.

Saída

Para cada caso de teste, imprima o tamanho da maior bolha. Imprima uma linha em branco entre dois casos de teste.

Exemplo de Entrada

1

11000

01100

00101

10001

01011

Exemplo de Saída

5

(7)

1230 - MODEX

Muitos operadores criptográficos bem conhecidos necessitam da exponenciação modular.

Isto é, dados os inteiros, x, y e n, compute

x

y

mod n

. Neste problema, você deverá

implementar de maneira eficiente esta operação.

Entrada

A entrada consiste de um linha contendo o número de casos de teste c, seguido por c

conjuntos de teste, seguidos por uma linha contendo o número “0”.

Cada conjunto de teste consiste de uma única linha contendo três inteiros x, y e n, separados

por espaços em branco. Você pode assumir que: 1 < x , n< 2

15

= 32768 , e 0 < y < 2

31

=

2147483648 .

Saída

A saída consiste de uma linha para cada caso de teste. A iésima linha deverá conter z, tal

que:

z

= x

y

mod n

para os respectivos números x , y , z dados no iésimo caso de teste.

Exemplo de Entrada

2 2 3 5 2 2147483647 13 0

Exemplo de Saída

3 11

Referências

Documentos relacionados

Para a caracterização físico-química da carga dissolvida dos rios Jundiaí e Capivari, foram quantificadas, durante o período de abril de 2011 a de- zembro de 2012, as

nós defendemos e não apenas descrevemos): a classificação paradigmática das Constituições, com base na teoria discursiva da Constituição de Jürgen Habermas: uma

Toda referência ou material que for retirado de sites da internet devem seguir o padrão de referência para o documento citado, seja livro, artigo, etc., conforme detalhado acima

da Serra do Cipó são fotoblásticas positivas, embora altas temperaturas promoveram a germinação no escuro.. Tabela

Desse modo, na preparação destas Demonstrações Contábeis, a Administração utilizou julgamentos, estimativas e premissas que afetam a aplicação das políticas contábeis do Banco

PRIETA SERGIO MASC 7KM #N/A BAHIA BLANCA. SCHENAIDER DAVID MASC 7KM

Uma visão panorâmica sobre o conjunto das experiências de conexão direta entre produtores e consumidores de alimentos no Brasil contemporâneo, especialmente no

Árvores (veios) de transmissão (incluindo as árvores de cames e virabrequins (cambotas)) e manivelas; mancais (chumaceiras) e “bronzes”; engrenagens e rodas de