Sua tarefa é calcular a raiz quadrada de um número inteiro positivo sem usar operadores matemáticos para alterar o número, como:
- Configurando uma variável (por exemplo, squareRoot = 5)
- Adição (A + B)
- Subtração (AB)
- Multiplicação (A * B)
- Divisão (A / B)
- Raízes quadradas, cubas, quarta, etc.
- Expoentes
Operadores de comparação (como <,>, ==, etc) não são considerados "operadores matemáticos" para os fins desta pergunta e são permitidos desde que não alterem o valor de uma variável.
O único operador que você pode usar é ++. As seguintes exceções estão em vigor:
- Se desejar, você pode inicializar uma variável configurando-a como 0.
- Se seu idioma não incluir a sintaxe ++, você poderá usar uma sintaxe equivalente, como foo + = 1 ou foo = foo + 1
- A raiz quadrada deve ser calculada com pelo menos 6 dígitos além do decimal (a casa das centenas de milhares) e gerar um número inteiro de casas decimais (por exemplo, se eu inserir 2, pode ser 14142135624 ou 1414213, dependendo do arredondamento) . Arredondar para cima ou para baixo não é importante.
Funções definidas pelo usuário não são permitidas. Além disso, a simulação de funções com goto também não é permitida.
Estou interessado em ver o que todos enviam! Feliz codificação!
ESCLARECIMENTO
Esclareça que o número é um número inteiro positivo. Você pode criar um código que faça qualquer número, mas isso não é necessário.
ESCLARECIMENTO # 2
Esclareça que operadores de comparação são permitidos.
ESCLARECIMENTO Nº 3
Adição, subtração, multiplicação, divisão e funções aos números de alteração não são permitidos em tudo , independentemente de se eles são salvos em uma variável ou não. Lamento que isso invalide algumas respostas existentes, mas pretendia definir esse grupo de operadores com "alterar o número" para evitar respostas de trolls (por exemplo, eu apenas usei a função sqrt (), você apenas proibiu a adição, multiplicação, divisão e subtração). Desculpe pela confusão.
ESCLARECIMENTO # 4
Esclareça que precisamos de pelo menos 5 dígitos. 10 dígitos fizeram com que o código fosse executado por um longo tempo.
while r*r<n*10e20:r+=1
- bastante trivial. Além disso, você pode considerar reduzir a saída necessária para 10 ^ 8 ou mais. Primeiro, porque 10 ^ 10 é maior que 2 ^ 31, e segundo, porque levará um tempo para incrementar esse valor alto.