Це завдання полягає в тому, щоб написати програму або сценарій, який підраховує суму всіх цифр у цілих числах від 1 до включення заданого числа.
Введення, одне натуральне число. Вихід, сума цифр у цьому числі та всі менші числа.
Приклади:
Input: 5
Integer Sequence: 1, 2, 3, 4, 5
Sum of Digits: 1 + 2 + 3 +4 + 5 = 15
Input: 12
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Sum of Digits: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 1 + 1 + 1 + 2 = 51
Щоб було зрозуміло, це підрахунок суми цифр - не цілих чисел. Для одноцифрових входів це буде те саме. Однак на входи, що перевищують 10, будуть відповіді різні. Це буде неправильна відповідь:
Input: 12
Output: 78
Ще один приклад, щоб показати різницю:
Input: 10
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Sum of Integers (INCORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
Digit Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0
Sum of Digits (CORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 = 46
Більш великий тестовий випадок (ПРАВИЛЬНА ВІДПОВІДА):
Input: 1000000
Output: 27000001
Правила та рекомендації:
- Надісланий код повинен бути повноцінною програмою або сценарієм - не лише функцією. Якщо код вимагає включення, імпорту тощо, вони повинні бути включені до розміщеного коду.
- Номер повинен бути введений користувачем - не жорстко закодований. Вхід може бути отриманий як аргумент командного рядка, файл, stdin або будь-який інший спосіб, за допомогою якого ваша мова може приймати дані користувача.
- Код повинен бути в змозі належним чином обробляти входи, щонайменше, до
(2^64)-1
. - Код повинен виводити лише суму.
- Надіслані програми та сценарії повинні бути зручними для користувачів та не витрачати на комп’ютерні ресурси (наприклад: вони не повинні оголошувати шалено великі масиви для утримання кожного символу). Суворого бонусу чи штрафу за це немає, але будь ласка, будьте хорошими програмістами.
Оцінка:
Первинний механізм оцінювання - за кодовою довжиною. Нижчі бали кращі. Також застосовуються такі бонуси та штрафи:
- -25 Бонус, якщо ваш код може обробляти всі додатні цифри, наприклад:
1234567891234567891234564789087414984894900000000
- -50 Бонус, якщо ваш код може обробляти прості вирази, наприклад
55*96-12
. Щоб отримати право на цей бонус, код повинен обробляти+ - / *
(додавання, віднімання, ділення, множення) операторів та виконувати порядок операцій. Ділення - це регулярне ціле ділення.- Наведений приклад (
55*96-12
) оцінює до5268
. Ваш код повинен повернути те саме для будь-якого з цих входів - правильна відповідь81393
.
- Наведений приклад (
- -10 Бонус, якщо ваш код відповідає бонусу -50 і може обробляти
^
оператора (експонента). - -100 Бонус, якщо ваш код відповідає бонусу -50 і не використовує
eval
або подібний для обробки виразів. - +300 пені, якщо ваш код покладається на будь-які веб-ресурси.
55*96-12
повернути?