2.9 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5a23c84252665b21eecc7eca | Числа Капрекара | 5 | 302296 | kaprekar-numbers |
--description--
Додатнє ціле число — це [число Капрекара](https://en.wikipedia.org/wiki/Kaprekar number), якщо:
- Це 1, або
- Квадрат числа у десятковій системі числення можна розбити на дві частини, сума яких дає початкове число.
Зауважте, що розділ у результаті якого вийдуть лише нулі, є недопустимим, оскільки 0 не вважається додатним числом.
Приклади чисел Капрекара:
2223
це число Капрекар, оскільки2223 * 2223 = 4941729
4941729
може бути розділено на494
та1729
, та494 + 1729 = 2223
- Серія чисел Kaprekar відома як A006886, і починається
1, 9, 45, 55, ...
--instructions--
Напишіть функцію, яка приймає число n
, основа bs
, і повертає true, якщо число - це число Капрекара для цієї основи. В іншому випадку видається результат false.
--hints--
isKaprekar
повинен бути функцією.
assert(typeof isKaprekar == 'function');
isKaprekar(1, 10)
повинен стати логічним значенням.
assert(typeof isKaprekar(1, 10) == 'boolean');
isKaprekar(1, 10)
повинен повертати true
.
assert.equal(isKaprekar(1, 10), true);
isKaprekar(9, 10)
повинен повертати true
.
assert.equal(isKaprekar(9, 10), true);
isKaprekar(2223, 10)
повинен повертати true
.
assert.equal(isKaprekar(2223, 10), true);
isKaprekar(22823, 10)
повинен повертати false
.
assert.equal(isKaprekar(22823, 10), false);
isKaprekar(9, 17)
повинен повертати false
.
assert.equal(isKaprekar(9, 17), false);
isKaprekar(225, 17)
повинен повертати true
.
assert.equal(isKaprekar(225, 17), true);
isKaprekar(999, 17)
повинен повертати false
.
assert.equal(isKaprekar(999, 17), false);
--seed--
--seed-contents--
function isKaprekar(n, bs) {
}
--solutions--
function isKaprekar(n, bs) {
if (n < 1) return false;
if (n == 1) return true;
for (var a = n * n, b = 0, s = 1; a; s *= bs) {
b += (a % bs) * s;
a = Math.floor(a / bs);
if (b && a + b == n) return true;
}
return false;
}