Эта задача - вариация рассказа Артура Кларка .
(Решители должны знать о последствиях выполнения этой задачи.)
Подробно, чтобы указать, что подразумевается под «именем»:
Целое число 1 имеет 1 имя «1».
Целое число 2 имеет 2 имени «1 + 1» и «2».
Целое число 3 имеет 3 имени «1 + 1 + 1», «2 + 1» и «3».
Целое число 4 имеет 5 имен «1 + 1 + 1 + 1», «2 + 1 + 1», «2 + 2», «3 + 1», «4».
Целое число 5 имеет 7 имен «1 + 1 + 1 + 1 + 1», «2 + 1 + 1 + 1», «2 + 2 + 1», «3 + 1 + 1», «3 + 2», «4 + 1», «5».
Это можно визуализировать в следующем виде:
1 1 1 1 1 1 1 2 1 1 1 2 2 1 1 1 3 3 2 1 1
Где строка $ n $ соответствует целому числу $ n $, а каждый столбец $ C $ в строке $ m $ слева направо соответствует числу имен, начинающихся с $ C $.
Необязательно заметим, что сумма $ n $ -ой строки $ P (n) $ является целочисленной статистикой .
задачаРеализуйте функцию, которая возвращает сумму $ n $ -ой строки.
numberOfNames
is a function.
testString: assert(typeof numberOfNames === 'function');
- text: numberOfNames(5)
should equal 7.
testString: assert.equal(numberOfNames(5), 7);
- text: numberOfNames(12)
should equal 77.
testString: assert.equal(numberOfNames(12), 77);
- text: numberOfNames(18)
should equal 385.
testString: assert.equal(numberOfNames(18), 385);
- text: numberOfNames(23)
should equal 1255.
testString: assert.equal(numberOfNames(23), 1255);
- text: numberOfNames(42)
should equal 53174.
testString: assert.equal(numberOfNames(42), 53174);
- text: numberOfNames(123)
should equal 2552338241.
testString: assert.equal(numberOfNames(123), 2552338241);
```