|
|
||||
Luiz Fernando Nunes
Calcular a potência 21000, com todos os algarismos, sem fazer aproximações ou uso de potências de 10. Logo de início percebemos que o número era gigantesco e o verdadeiro objetivo do professor não era o resultado em si, mas testar a criatividade dos alunos na tentativa de encontrar a solução. Alguns colegas se aventuraram usando a força bruta, tentando calcular manualmente a referida potência, utilizando enormes cartolinas e se revezando na realização dos cálculos. Vale lembrar que naquela época os computadores pessoais não eram comuns e as máquinas de calcular normalmente apresentavam no máximo 8 ou 10 dígitos. Para ter uma ideia da dificuldade do problema, abra seu computador e peça, por exemplo, à calculadora científica do Windows para calcular 21000. Você obterá Pensei durante algum tempo, mas não encontrei um caminho. Foi então que pedi ajuda para o amigo Figueiredo, que estava mais adiantado no curso e costumava ter boas ideias para resolver problemas. Além disso, ele possuía uma máquina de calcular programável que aceitava códigos na linguagem BASIC, mas que também tinha uma capacidade limitada de dígitos. Ele pensou um pouco e teve a ideia colocada na forma do algoritmo que segue para obter a potência: Passo 1: Construir um vetor com uma quantidade suficiente de coordenadas. Passo 2: Atribuir valor 1 para a primeira coordenada e o valor 0 para as demais. Passo 3: Multiplicar as coordenadas do vetor por 2. Passo 4: Percorrer cada coordenada do vetor, verificando se o número constante nela excede 8 algarismos. Se positivo, eliminar o primeiro algarismo do número que excedeu esse limite (e nesse caso será necessariamente 1) e somá-lo na coordenada seguinte. Passo 5: Retornar ao passo 3 até que tenham sido efetuadas 1000 multiplicações por 2. Passo 6: Reescrever o vetor resultante, invertendo a ordem das coordenadas, isto é, a primeira coordenada será a última, a segunda será a penúltima e assim sucessivamente, mantendo a ordem dos algarismos em cada coordenada. O número resultante, colocando essas coordenadas lado a lado, é a potência procurada. No Apêndice, apresentamos o algoritmo implementado em MATLAB (que não existia, na época). Para que o leitor tenha uma ideia mais clara de como funciona o algoritmo, vamos supor, apenas para efeito didático, que se tenha uma calculadora que só exibe dois algarismos, e nela queiramos calcular 214. Observe as tabelas a seguir, onde as coordenadasV1, V2 e V3 do vetor V estão em verde:
A primeira linha das tabelas é o expoente, que avança de 1 a 14, enquanto a última linha reflete o Passo 6 (último) do algoritmo. As três linhas intermediárias contêm o vetor V, com suas componentes V1, V2 e V3. No início, só precisamos da primeira coordenada do vetor. As outras, fazemos igual a 0. Quando o expoente passa de 6 para 7, a potência 27=128 tem 3 algarismos e, portanto, ultrapassa a capacidade de exibição da calculadora. Coloca-se então em V1 apenas o final 28, enquanto o 1 passa para V2, que abrimos nesse instante. Na verdade, apenas foi utilizada a velha ideia do “...vai um”. Aqui, o 1 está representando 100 = 102, sendo o expoente 2 a capacidade máxima de exibição da calculadora. Para os expoentes seguintes, seguimos multiplicando todas as coordenadas do vetor por 2. Quando se passa do expoente 8 para o expoente 9, multiplicando as coordenadas por 2, o vetor deveria ser:
Mas como 112 tem 3 algarismos, devemos passar o 1 inicial para a segunda coordenada (“vai um”, de novo!), que ficará 4 + 1 = 5, obtendo então:
Fenômeno análogo ocorre quando n passa de 12 para 13 (confira!). De 13 para 14, o resultado de multiplicar cada coordenada por 2 deveria ser:
Mas 184 não pode ser exibido pela calculadora. Então, retemos 84 e vai um para V2, ficando:
Mas isso ainda não é suficiente, pois 163 tem 3 algarismos. Então, introduz-se a terceira coordenada do vetor V e, usando de novo o “vai um”, fica:
Aqui, o 1 está representando 100 = 102. A ideia desse algoritmo é simples, mas muito criativa, tendo permitido a resolução do problema com os recursos que estavam disponíveis na época. E ainda hoje é útil, porque não existe calculadora ou computador que exiba 302 algarismos. Esse exemplo mostra que muitas vezes mais vale uma boa ideia (um bom algoritmo) do que uma máquina poderosa sem que se saiba utilizá-la. O resultado encontrado, ao final das 1000 etapas, foi o seguinte número com 302 algarismos:
Felizmente o professor não pediu para escrevermos o resultado por extenso! A propósito, os colegas que tentaram efetuar os cálculos manualmente não conseguiram encontrar a resposta. Tantos anos se passaram, mas me lembro como se fosse hoje o interesse dos alunos e do contentamento do professor quando mostramos a solução. Assim, acredito que a apresentação em sala de aula de problemas desafiadores e curiosos, preferencialmente dentro do contexto da aula, pode levar alguns estudantes a perceber a beleza das boas ideias, a enxergar a Matemática com outros olhos e, quem sabe, a admirá-la como quem aprecia uma bela obra de arte.
Comentário Vale a pena também lembrar que os computadores trabalham com o sistema binário e que, nesse sistema, multiplicar por dois (ou somar um número com ele mesmo) nada mais é do que acrescentar um zero no final da cadeia binária (por exemplo, 2×1101=11010). Assim, a resposta mais simples para o referido problema seria simplesmente escrever o numeral 1, seguido de mil zeros, pois o professor não havia especificado a base do sistema de numeração (... na época ninguém pensou nisso!).
Apêndice Transcrição do algoritmo em um código do MATLAB:
|