Pi là một số vô tỷ , có nghĩa là biểu diễn thập phân của nó không bao giờ chấm dứt hoặc lặp lại chính nó.
Pi rút ngắn thành 41 chữ số thập phân (40 vị trí) là 3.1415926535897932384626433832795028841971
.
Nếu chúng ta bỏ qua dấu thập phân và liệt kê các chữ số dưới dạng một chuỗi các số nguyên dương, tránh trùng lặp , chúng ta sẽ nhận được 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 ).
(Lưu ý rằng 15
xuất hiện trong chuỗi thay 1 5
vì vì 1
đã xảy ra.
Cũng lưu ý rằng điều 0
đó không xảy ra vì nó không tích cực; 950
chứa số 0 đầu tiên.)
Để xây dựng đầu tiên số pirrational chúng tôi sử dụng chuỗi này để chỉ số vào các chữ số của Pi (chữ số đầu tiên là 3, thứ hai 1, vv).
Vì vậy, chữ số đầu tiên của số vi phạm bản quyền đầu tiên là chữ số thứ 3 của Pi,
chữ số thứ hai là chữ số thứ nhất của Pi,
chữ số thứ ba là chữ số thứ 4 của Pi, chữ số
thứ tư là chữ số thứ 15 của Pi,
v.v.
Một dấu thập phân được thêm vào sau chữ số đầu tiên để bắt chước Pi.
Do đó, số vi phạm bản quyền đầu tiên đến 41 chữ số là 4.3195195867462520687356193644029372991880
.
(Lưu ý rằng đối với chữ số thứ 30, tôi phải chuyển sang chữ số thứ 974 của Pi.)
Để xây dựng số bản quyền thứ hai, quy trình được lặp lại bằng cách sử dụng số bản quyền đầu tiên thay vì số Pi. (Bản thân Pi có thể được gọi là số lậu zeroth.) Vì vậy, chuỗi mới là 4 3 1 9 5 19 58 ...
và số piiratic đầu tiên được lập chỉ mục để tạo ra số thứ hai, bắt đầu 9.14858...
.
Các số vi phạm bản quyền hơn nữa được tạo theo cùng một cách, mỗi số được tạo từ số trước.
Thử thách
Nhiệm vụ của bạn là viết chương trình ngắn nhất có thể mà mất trong hai số nguyên, N
và D
, và kết quả đầu ra các N
số pirrational thứ cắt ngắn để D
thập phân chữ số.
D
luôn luôn dương nhưng N
không âm và các D
chữ số của Pi phải là đầu ra khi bằng N
0.
Khi D
là 1, không có vấn đề gì nếu dấu thập phân có mặt hay không.
Đầu vào phải đến từ stdin hoặc dòng lệnh và đầu ra sẽ đi đến thiết bị xuất chuẩn (hoặc các lựa chọn thay thế gần nhất với ngôn ngữ của bạn).
Chương trình của bạn sẽ hoạt động cho tất cả các giá trị đầu vào từ N
và D
dưới 2 16 , nhưng nó không cần phải kịp thời hoặc hiệu quả.
Mã ngắn nhất tính bằng byte thắng.
(Lưu ý rằng số vi phạm bản quyền thoát ra trong các căn cứ khác nhưng mọi thứ trong thử thách này được thực hiện ở cơ sở 10.)
N=1
, D=13393
ví dụ, bạn sẽ cần các chữ số 31 triệu của PI