Files
freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-63-powerful-digit-counts.md
2022-01-20 20:30:18 +01:00

2.3 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f3ab1000cf542c50febe 問題 63: 累乗の桁数 5 302175 problem-63-powerful-digit-counts

--description--

5 桁の数 16807 = 75 は、数の 5 乗です。 同様に、9 桁の数 134217728 = 89 は、数の 9 乗です。

数の n 乗である n 桁の正の整数がいくつあるかを返す関数を完成させなさい。

--hints--

powerfulDigitCounts(1) は数値を返す必要があります。

assert(typeof powerfulDigitCounts(1) === 'number');

powerfulDigitCounts(1)9 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(1), 9);

powerfulDigitCounts(2)6 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(2), 6);

powerfulDigitCounts(3)5 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(3), 5);

powerfulDigitCounts(4)4 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(4), 4);

powerfulDigitCounts(5)3 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(5), 3);

powerfulDigitCounts(6)3 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(6), 3);

powerfulDigitCounts(7)2 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(7), 2);

powerfulDigitCounts(8)2 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(8), 2);

powerfulDigitCounts(10)2 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(10), 2);

powerfulDigitCounts(21)1 を返す必要があります。

assert.strictEqual(powerfulDigitCounts(21), 1);

--seed--

--seed-contents--

function powerfulDigitCounts(n) {

  return true;
}

powerfulDigitCounts(1);

--solutions--

function powerfulDigitCounts(n) {
  function countDigits(num) {
    let counter = 0;
    while (num > 0) {
      num = Math.floor(num / 10);
      counter++;
    }
    return counter;
  }

  let numbersCount = 0;

  let curNum = 1;
  while (curNum < 10) {
    let power = n;
    if (power === countDigits(curNum ** power)) {
      numbersCount++;
    }
    curNum++;
  }

  return numbersCount;
}