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 ของ Pi
หลักที่สองคือหลักที่ 1 ของ Pi
หลักที่สามคือหลักที่ 4 ของ Pi
ที่สี่คือที่15หลักของ Pi
และอื่น ๆ
จุดทศนิยมจะถูกเพิ่มหลังจากตัวเลขแรกเพื่อเลียนแบบ Pi
ดังนั้นจำนวน pirrational แรกถึง 41 4.3195195867462520687356193644029372991880
หลักเป็น
(โปรดทราบว่าสำหรับหลักที่ 30 ฉันต้องไปตลอดทางจนถึงหลักที่ 974 ของ Pi)
เพื่อสร้างหมายเลขการละเมิดลิขสิทธิ์ที่สองกระบวนการจะทำซ้ำโดยใช้หมายเลขการละเมิดลิขสิทธิ์แรกแทน Pi (Pi ตัวเองอาจจะเรียกว่าจำนวน pirrational ข้อที่ศูนย์.) ดังนั้นลำดับใหม่เป็น4 3 1 9 5 19 58 ...
และจำนวน piirational 9.14858...
แรกคือการจัดทำดัชนีการผลิตที่สองซึ่งจะเริ่มต้น
หมายเลขการละเมิดลิขสิทธิ์เพิ่มเติมจะถูกสร้างขึ้นในลักษณะเดียวกันโดยแต่ละหมายเลขจะถูกสร้างขึ้นจากหมายเลขก่อนหน้า
ท้าทาย
งานของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะเป็นไปได้โดยใช้จำนวนเต็มสองจำนวนN
และD
และส่งออกN
หมายเลขการละเมิดลิขสิทธิ์ th ให้เป็นD
เลขทศนิยม
D
จะเป็นค่าบวกเสมอ แต่N
ไม่ใช่ค่าลบและD
ตัวเลขของ Pi ควรจะถูกส่งออกเมื่อN
เป็น 0
เมื่อD
เป็น 1 มันไม่สำคัญว่าจะมีจุดทศนิยมหรือไม่
อินพุตควรมาจาก stdin หรือบรรทัดคำสั่งและเอาต์พุตควรไปที่ stdout (หรือตัวเลือกที่ใกล้เคียงที่สุดของภาษาของคุณ)
โปรแกรมของคุณควรทำงานกับค่าอินพุตทั้งหมดN
และD
ต่ำกว่า 2 16แต่ไม่จำเป็นต้องตรงเวลาหรือมีประสิทธิภาพ
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
(โปรดทราบว่าหมายเลขการละเมิดลิขสิทธิ์ออกจากฐานอื่น แต่ทุกอย่างในการท้าทายนี้ทำในฐาน 10)
N=1
, D=13393
ตัวอย่างเช่นคุณจะต้อง 31000000 หลักของ PI