Визначення
Існує нескінченний ряд з'єднаних натуральних чисел (додатні цілі числа, починаючи з 1):
1234567891011121314151617181920212223...
Виклик
- Напишіть програму будь-якою мовою, яка приймає номер позиції як вхідний і виводить цифру з цієї позиції у рядку, визначеному вище.
- Номер позиції - ціле число довільного розміру. Це перша позиція 1, даючи вихідну цифру '1'
- Введення або в десятковій частині (наприклад, 13498573249827349823740000191), або в електронному позначенні (наприклад, 1.2e789), що відповідає додатному цілому числу.
- Програма повинна закінчитися в розумний час (10 секунд на сучасних ПК / Mac), враховуючи дуже великий індекс як вхід (наприклад, 1e123456 - тобто 1 з 123456 нулями). Отже, простий цикл ітерації неприйнятний.
- Програма повинна закінчитися з помилкою за 1 с, якщо дано недійсний ввід. Напр. 1,23е (недійсне) або 1,23е1 (дорівнює 12,3 - не ціле число)
- Добре використовувати публічну бібліотеку BigNum для розбору / зберігання чисел та виконання простих математичних операцій над ними (+ - * / exp). Байтовий штраф не застосовується.
- Найкоротший код виграє.
TL; DR
- Вхід: bignum ціле число
- Вихід: цифра на цій позиції у нескінченному рядку
123456789101112131415...
Деякі тестові випадки приймання
у позначенні "Введення: вихід". Усі вони повинні пройти.
- 1: 1
- 999: 9
- 10000000: 7
- 1e7: 7 (те саме, що і рядок вище)
- 13498573249827349823740000191: 6
- 1.1e10001: 5
- 1e23456: 5
- 1.23456e123456: 4
- 1e1000000: 0
- 1.23e: помилка (недійсний синтаксис)
- 0: помилка (поза межами)
- 1.23e1: помилка (не ціле число)
Бонус!
Вихідний номер позиційного номера всередині номера та номер виводу. Наприклад:
13498573249827349823740000191: 6 24 504062383738461516105596714
- Це цифра '6' у позиції 24 номера '50406238373846151610559 6 714'
1e1000000: 0 61111 1000006111141666819445...933335777790000
- Цифру "0" на позиції 61111 з 999995-значного довгого числа я сюди не включатиму.
Якщо ви виконуєте бонусне завдання, помножте розмір коду на 0,75
Кредит
Це завдання було дано на одному з зборів devclub.eu у 2012 році, без великої кількості. Отже, більшість поданих відповідей були тривіальними петлями.
Веселіться!
1.23456e123456
довільно, карають мови, які не можуть обробити такі значення спочатку, і вимагає, щоб вони виконували обробку рядків, яка дотична до завдання.