Pi 는 비이성적 인 숫자로 , 10 진수 표현은 절대 종료되거나 반복되지 않습니다.
소수점 이하 41 자리 (40 자리)로 잘린 Pi는 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
대신 순서로 나타나는 통지입니다 .
또한 양수가 아니기 때문에 발생하지 않습니다 . 첫 번째 0을 포함합니다.)1 5
1
0
950
첫 번째 해적 수 를 구성 하기 위해이 시퀀스를 사용하여 Pi의 숫자 (첫 번째 숫자는 3, 두 번째 1 등)로 색인합니다.
따라서 첫 번째 해적 수의 첫 번째 숫자는 Pi의 세 번째 숫자이고
, 두 번째 숫자는 Pi의 첫 번째 숫자이며,
세 번째 숫자는 Pi
의 네 번째 숫자이며, 네 번째 숫자는 Pi 의 다섯 번째 숫자입니다
.
소수점을 첫 번째 숫자 뒤에 추가하여 Pi를 모방합니다.
따라서 첫 번째 해적 수는 41 자리입니다 4.3195195867462520687356193644029372991880
.
(30 번째 자리의 경우 Pi의 974 번째 자리까지 가야했습니다.)
제 2 해적 수를 구성하기 위해, Pi 대신 제 1 해적 수를 사용하여 프로세스가 반복된다. (Pi 자체는 제로 해적 수라고 불릴 수 있습니다.) 따라서 새로운 시퀀스는 4 3 1 9 5 19 58 ...
첫 번째 해적 숫자가 인덱스되어 두 번째를 생성하여 시작됩니다 9.14858...
.
추가의 해적 수는 동일한 방식으로 생성되며, 각각은 이전의 것에서 생성됩니다.
도전
당신의 작업은 두 개의 정수를 사용 N
하여 가능한 가장 짧은 프로그램을 작성하는 것입니다. 그리고 는 소수점 이하 자릿수 를 10 진수로 D
출력합니다 .N
D
D
항상 양수이지만 N
음수이며 D
때 파이 자리 출력되어야 N
0 인
경우 D
는 소수점 존재 여부를 중요하지 않는 경우 인 1이다.
입력은 stdin 또는 명령 행에서 가져와야하며 출력은 stdout (또는 사용자의 언어에서 가장 가까운 대안)으로 이동해야합니다.
여러분의 프로그램은 모든 입력 값에 대한 작업을해야 N
하고 D
2 이하 16 만 적시 또는 효율적으로 할 필요는 없다.
(해적 숫자는 다른 기지에서 빠져 나오지만이 과제의 모든 것은 10 진수로 이루어집니다.)
N=1
, D=13393
예를 들어, 당신은 PI의 31 만 번째 자리 필요할 것