freeCodeCamp/curriculum/challenges/portuguese/08-coding-interview-prep/project-euler/problem-414-kaprekar-consta...

2.8 KiB

id challengeType title videoUrl localeTitle
5900f50b1000cf542c51001d 5 Problem 414: Kaprekar constant Problema 414: constante de legenda

Description

6174 é um número notável; se classificarmos seus dígitos em ordem crescente e subtrair esse número do número obtido quando você classificar os dígitos em ordem decrescente, obteremos 7641-1467 = 6174. Ainda mais notável é que se começarmos com qualquer número de 4 dígitos e repetirmos este processo de classificação e subtração, acabaremos com 6174 ou imediatamente com 0 se todos os dígitos forem iguais. Isso também funciona com números que têm menos de 4 dígitos, se preenchermos o número com zeros à esquerda até que tenhamos 4 dígitos. Por exemplo, vamos começar com o número 0837: 8730-0378 = 8352 8532-2358 = 6174

6174 é chamado a constante de Kaprekar. O processo de classificação, subtração e repetição até que 0 ou a constante da Kaprekar seja alcançada é chamado de rotina Kaprekar.

Podemos considerar a rotina da Kaprekar para outras bases e número de dígitos. Infelizmente, não é garantido que uma constante Kaprekar exista em todos os casos; ou a rotina pode terminar em um ciclo para alguns números de entrada ou a constante à qual a rotina chega pode ser diferente para diferentes números de entrada. No entanto, pode-se mostrar que, para 5 dígitos e uma base b = 6t + 3 ≠ 9, existe uma constante de Kaprekar. Por exemplo, base 15: (10,4,14,9,5) 15 base 21: (14,6,20,13,7) 21

Defina Cb para ser a constante de Kaprekar na base b para 5 dígitos. Defina a função sb (i) como 0 se i = Cb ou se eu escrevi na base b consiste em 5 dígitos idênticos o número de iterações que a rotina de Kaprekar leva na base b para chegar a Cb, caso contrário

Note que podemos definir sb (i) para todos os inteiros i <b5. Se eu escrevi na base b leva menos de 5 dígitos, o número é preenchido com zero dígitos até que tenhamos 5 dígitos antes de aplicar a rotina Kaprekar.

Defina S (b) como a soma de sb (i) para 0 <i <b5. Por exemplo, S (15) = 5274369 S (111) = 400668930299

Encontre a soma de S (6k + 3) para 2 ≤ k ≤ 300. Dê os últimos 18 dígitos como sua resposta.

Instructions

Tests

tests:
  - text: <code>euler414()</code> deve retornar 552506775824935500.
    testString: 'assert.strictEqual(euler414(), 552506775824935500, "<code>euler414()</code> should return 552506775824935500.");'

Challenge Seed

function euler414() {
  // Good luck!
  return true;
}

euler414();

Solution

// solution required