Algoritmos eficientes

Quinta, 18 de junho de 2020

Atenção: Esta tarefa não será corrigida manualmente, mas você deve tentar respondê-la genuinamente. Se tiver alguma dúvida se ela está ou não correta, procure os monitores. Tentativas de passar no teste automático sem responder as questões serão consideradas fraude.

Observação: Os exercícios seguintes foram extraídos de repositórios de problemas públicos na internet. Se você tiver interesse, pode submeter sua solução também nessas plataformas, além de estudar e resolver vários dos outros problemas disponíveis. Mas você não pode copiar nem consultar quaisquer soluções prontas; qualquer tentativa nesse sentido será considerada fraude.

Notas e Moedas

Leia um número de ponto flutuante com duas casas decimais. Esse valor representa um valor monetário. A seguir, calcule o menor número de notas e moedas possíveis no qual o valor pode ser decomposto. As notas consideradas são de 100, 50, 20, 10, 5, 2. As moedas possíveis são de 1, 0.50, 0.25, 0.10, 0.05 e 0.01. A seguir mostre a relação de notas e moedas necessárias.

O nome do seu programa deve ser coins.py. Você receberá conceito B por resolver corretamente esse exercício.

Entrada

O arquivo de entrada contém um valor de ponto flutuante N.

576.73

Saída

Imprima a quantidade mínima de notas e moedas necessárias para trocar o valor inicial, conforme exemplo fornecido. Utilize ponto para separar a parte decimal.

NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
1 nota(s) de R$ 5.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
2 moeda(s) de R$ 0.10
3 moeda(s) de R$ 0.01

Fonte: https://www.urionlinejudge.com.br/judge/pt/problems/view/1021

Dividindo os Trabalhos I

Chegamos finalmente no final do semestre e pra variar, trabalhos estão acumulados! Os professores, com a intenção de ajudar (ou não), decidiram que os trabalhos serão feitos em duplas. Além disso, eles deram o spoiler do grau de dificuldade que cada trabalho.

Sabendo disso, Rangel, nosso velho amigo, escolheu Gugu como parceiro em sua dupla, pois ele sabe que Gugu é um cara responsável. Como ambos estão apertados, eles decidiram dividir os trabalhos com os seguintes critérios:

  • A ordem dos trabalhos não pode ser alterada durante a divisão;

  • A divisão precisa ser justa, ou seja, as somas dos graus de dificuldades dos trabalhos a serem feitos por Rangel e por Gugu devem ter a menor diferença possível;

  • Rangel sempre faz os primeiros trabalhos e Gugu os restantes.

Como os dois estão muito ocupados na biblioteca pegando os livros para resolverem os trabalhos, eles pediram a você para determinar essa diferença.

O nome do seu programa deve ser jobs.py. Você receberá conceito A apenas se resolver corretamente esse exercício. Dica: pense em uma forma de calcular a diferença sem percorrer toda a lista de trabalhos mais de uma vez.

Entrada

O arquivo contém vários casos de teste. A primeira linha de cada caso contém um inteiro N que indica o número de trabalhos a serem realizados. A segunda linha contém N inteiros representando os graus de dificuldade.

3
2 3 5
4
1 2 2 6

Saída

Para cada caso de teste, deve ser impresso um inteiro que corresponde à diferença descrita acima. Deixe uma quebra de linha após a resposta de cada caso de teste, inclusive após o último.

0
1

Fonte: https://www.urionlinejudge.com.br/judge/pt/problems/view/2715