Figurinhas
Raphael e Luiza são aficcionados por figurinhas de futebol. Ambos também têm o hábito de trocarem as figuras repetidas com seus amigos e certo dia pensaram em uma brincadeira diferente.
Chamaram todos os amigos e propuseram o seguinte: com as figurinhas em mãos, cada um tentava fazer uma troca com o amigo que estava mais perto seguindo a seguinte regra: cada um contava quantas figurinhas tinha. Em seguida, eles tinham que dividir as figurinhas de cada um em pilhas tal que todas as pilhas, entre ambos, tivessem o mesmo tamanho e esse fosse o maior possível. Então, cada um escolhia uma das pilhas de figurinhas do amigo para receber.
Por exemplo, se Raphael e Luiza fossem trocar as figurinhas e tivessem respectivamente 8 e 12 figurinhas, ambos dividiriam as suas quantidades em pilhas de 4 figurinhas cada pois esse seria o maior tamanho de pilha comum a ambos. Assim, Raphael teria 2 pilhas e Luiza teria 3 pilhas, cada pilha contendo 4 figurinhas. Em seguida, ambos escolheriam uma pilha do amigo para receber.
Você pode fazer um programa para ajudá-los com essa brincadeira?
Entrada:
A entrada contém uma linha com 2 inteiros n (1 <= n <= 1000) e m (1 <= m <= 1000) indicando, respectivamente, a quantidade de figurinhas que Raphael e Luiza têm para trocar.
Saída:
A saída será o tamanho máximo da pilha de figurinhas que poderia ser trocada entre dois jogadores.
Soluções para a tarefa
Resposta:
### Subprogramas
# chama a função 'mdc' de 'n' e 'm'
def mdc(n, m):
# se resto da divisão de 'n'(maior) por 'm'(menor) for igual a zero
if n % m == 0:
# retorna m
return m
# senão
else:
# executa novamente a função mdc, porém agora mdc(m, n % m)
return mdc(m, n % m)
### Programa Principal
# 'figurinhas' é a string de onde serão tirados os valores n e m
figurinhas = input('Quantas figurinhas Raphael e Luiza têm para trocar? ').split(' ')
# sendo 'n' o valor na primeira posição
n = int(figurinhas[0])
# e 'm' o valor na segunda posição
m = int(figurinhas[1])
# enquanto não forem informados dois números válidos o programa pede para repetir a entrada
while ((n < 1) or (1000 < n)) or ((m < 1) or (1000 < m)):
print('Insira números válidos!')
n, m = map(int, (input('Quantas figurinhas Raphael e Luiza têm para trocar? ').split()))
# imprime no console o resultado da função mdc(n, m)
print(mdc(n, m))
Explicação:
Deixei a explicação no próprio código, aparecendo aqui em itálico. O código em si aparece em negrito.
Tudo o que estiver em itálico pode ser deletado sem afetar em nada o código pois não tem valor no mesmo.