Há uma pergunta no site que pede para implementar a divisão sem usar a divisão.
No meu caso, estou pedindo para você fazer o mesmo, mas apenas usando adição.
O que isso significa é basicamente: adição é o único operador ou função permitida que opera com números e retorna outros números (ou seja, sem subtração, multiplicação, exponenciação, inversão bit a bit, etc.). Coisas como instruções if, operadores de atribuição e comparação e loops ainda são permitidos, desde que dentro desses, você ainda use apenas a adição.
Sua tarefa é construir uma função divide(a, b)
que leva dois inteiros positivos a
e b
e retorna o resultado de a
ser dividido por b
e arredondado para zero, mas usando adição e há outros operadores aritméticos, e não outras construções de dados, além de números.
O código que vencer será aquele que requer o menor número de operações de adição a serem executadas no conjunto de entradas, onde a
varia de 1
para 200
e b
varia de 1
para a
.
Para acompanhar isso, você pode criar uma versão alternativa do seu código que substitua todas as instâncias de a + b
with add(a, b)
e program add
para incrementar uma add_used
variável global e retornar a soma dos dois números.