ท้าทาย
ลองจินตนาการN
-tuple ของจำนวนเต็มระหว่าง 0 และรวมและขอเรียกว่าM
F
มีความเป็น(M + 1) ** N
ไปได้F
ทั้งหมด
จำนวนดังกล่าวF
ตอบสนองความไม่เท่าเทียมกันต่อไปนี้ทั้งหมด (ดัชนีเป็นฐานเดียว)
F[n] + F[n+1] <= M
สำหรับ1 <= n < N
F[N] + F[1] <= M
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เวลาสองจำนวนเต็มบวก N
และM
และผลคำตอบในรูปแบบที่สะดวกใด ๆ
กรณีทดสอบ
(N,M) => Answer
(1,1) => 1
(2,1) => 3
(3,1) => 4
(4,1) => 7
(1,2) => 2
(2,2) => 6
(3,2) => 11
(4,2) => 26
(10,3) => 39175
(10,4) => 286555
(10,5) => 1508401
(25,3) => 303734663372
(25,4) => 43953707972058
(25,5) => 2794276977562073
(100,3) => 8510938110502117856062697655362747468175263710
(100,4) => 3732347514675901732382391725971022481763004479674972370
(100,5) => 60964611448369808046336702581873778457326750953325742021695001
คำอธิบาย
M (max value of element) = 1
F[1] + F[1] <= 1; F = [0]
(1,1) => 1
F[1] + F[2] <= 1; F = [0,0], [0,1], [1,0]
(2,1) => 3
F = [0,0,0], [0,0,1], [0,1,0], [1,0,0]
(3,1) => 4
F = [0,0,0,0], [0,0,0,1], [0,0,1,0], [0,1,0,0], [0,1,0,1], [1,0,0,0], [1,0,1,0]
(4,1) => 7
---
M = 2
F[1] + F[1] <= 2; F = [0], [1]
(1,2) => 2
F = [0,0], [0,1], [0,2], [1,0], [1,1], [2,0]
(2,2) => 6
F = [0,0,0], [0,0,1], [0,0,2], [0,1,0], [0,1,1], [0,2,0], [1,0,0], [1,0,1],
[1,1,0], [1,1,1], [2,0,0]
(3,2) => 11
(4,2) => 26 (left as exercise for you)
กฎระเบียบ
- นี่เป็นความท้าทายที่จำกัด อย่างซับซ้อน ความซับซ้อนของเวลาในรหัสของคุณควรเป็นพหุนาม
M
และN
(เช่นคุณไม่สามารถสร้างสิ่ง(M + 1) ** N
อันดับทั้งหมดแล้วตรวจสอบเงื่อนไข) โปรดอธิบายวิธีการของคุณในการส่งของคุณ - ใช้กฎมาตรฐานของกอล์ฟ คำตอบที่สั้นที่สุดเป็นไบต์ชนะ
mat(...,int)
ดูเหมือนจะไม่สามารถใช้ได้กับทุกn=100
กรณี วิธีการที่ถูกต้อง (ใช้ SymPy ที่จะรวมพลังของรากของพหุนามลักษณะไม่ทำงานตัวอย่างเช่น) แต่ numpy ไปที่ไหนสักแห่งที่ไม่ถูกต้องเป็นตัวเลขที่เพิ่มขึ้น (บางทีมันอาจจะเป็น**
ผู้ประกอบการพลังงาน?)