Пі - ірраціональне число , що означає, що його десяткове подання ніколи не припиняється і не повторюється.
Pi усічений до 41 десяткової цифри (40 місць) є 3.1415926535897932384626433832795028841971
.
Якщо ми ігноруємо десяткову точку і перераховуємо цифри як послідовність натуральних чисел, уникаючи дублікатів , отримуємо 3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 950 28 841 971
( OEIS A064809 ).
(Помітьте, що 15
з’являється в послідовності замість того, 1 5
що 1
вже відбулося.
Також зверніть увагу, що 0
це не відбувається, оскільки воно не є позитивним; 950
містить перший нуль.)
Для побудови першого піраціонального числа ми використовуємо цю послідовність для індексації до цифр Pi (перша цифра - 3, друга 1 тощо).
Отже, перша цифра першого пірараційного числа - це 3-я цифра Пі,
друга цифра - 1-я цифра Пі,
третя цифра - 4-та цифра Пі,
четверта - 15-та цифра Пі
та інше.
Десяткова крапка додається після першої цифри для імітації Pi.
Таким чином, перше піраціональне число - 41 цифра 4.3195195867462520687356193644029372991880
.
(Зауважте, що для 30-ї цифри я повинен був пройти весь шлях до 974-ї цифри Пі.)
Для побудови другого піраціонального числа процес повторюють, використовуючи перше піраціональне число замість Pi. (Саму Pi можна назвати нульовим пірраційним числом.) Отже, нова послідовність є, 4 3 1 9 5 19 58 ...
а перше піраційне число індексується для отримання другого, яке починається 9.14858...
.
Подальші піраціональні числа створюються таким же чином, кожне з яких створюється попереднім.
Виклик
Ваше завдання полягає в тому, щоб написати найкоротшу можливу програму, яка займає два цілих числа, N
і D
, і виводить число N
пірраціонального числа, усічене до D
десяткових цифр.
D
завжди позитивний, але N
невід'ємний, і D
цифри Pi повинні виводитися, коли N
дорівнює 0.
Коли D
це значення 1, не має значення, присутній чи ні десяткова крапка.
Вхід повинен надходити від stdin або командного рядка, а вихід повинен переходити до stdout (або найближчих альтернатив вашої мови).
Ваша програма повинна працювати для всіх вхідних значень N
та D
нижче 2 16 , але вона не повинна бути своєчасною та ефективною.
Виграє найкоротший код у байтах .
(Зверніть увагу, що пірраціональні цифри існують в інших базах, але все, що стосується цього завдання, робиться в базі 10.)
N=1
, D=13393
наприклад, вам потрібна 31 - мільйонної цифри PI