--- id: 5900f3ab1000cf542c50febe title: 'Problem 63: Powerful digit counts' challengeType: 5 forumTopicId: 302175 dashedName: problem-63-powerful-digit-counts --- # --description-- The 5-digit number, 16807 = 75, is also a fifth power. Similarly, the 9-digit number, 134217728 = 89, is a ninth power. Complete the function so that it returns how many positive integers are of length `n` and an `n`th power. # --hints-- `powerfulDigitCounts(1)` should return a number. ```js assert(typeof powerfulDigitCounts(1) === 'number'); ``` `powerfulDigitCounts(1)` should return `9`. ```js assert.strictEqual(powerfulDigitCounts(1), 9); ``` `powerfulDigitCounts(2)` should return `6`. ```js assert.strictEqual(powerfulDigitCounts(2), 6); ``` `powerfulDigitCounts(3)` should return `5`. ```js assert.strictEqual(powerfulDigitCounts(3), 5); ``` `powerfulDigitCounts(4)` should return `4`. ```js assert.strictEqual(powerfulDigitCounts(4), 4); ``` `powerfulDigitCounts(5)` should return `3`. ```js assert.strictEqual(powerfulDigitCounts(5), 3); ``` `powerfulDigitCounts(6)` should return `3`. ```js assert.strictEqual(powerfulDigitCounts(6), 3); ``` `powerfulDigitCounts(7)` should return `2`. ```js assert.strictEqual(powerfulDigitCounts(7), 2); ``` `powerfulDigitCounts(8)` should return `2`. ```js assert.strictEqual(powerfulDigitCounts(8), 2); ``` `powerfulDigitCounts(10)` should return `2`. ```js assert.strictEqual(powerfulDigitCounts(10), 2); ``` `powerfulDigitCounts(21)` should return `1`. ```js assert.strictEqual(powerfulDigitCounts(21), 1); ``` # --seed-- ## --seed-contents-- ```js function powerfulDigitCounts(n) { return true; } powerfulDigitCounts(1); ``` # --solutions-- ```js 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; } ```