ตัวเลขสแควร์คือตัวเลขที่อยู่ในรูปของn^2
ที่ซึ่ง n เป็นจำนวนเต็ม สิ่งเหล่านี้เรียกอีกอย่างว่าสี่เหลี่ยมที่สมบูรณ์แบบเพราะเมื่อคุณนำสแควร์รูทของมันมาคุณจะได้จำนวน
ตัวเลข 10 ตารางแรกคือ: ( OEIS )
0, 1, 4, 9, 16, 25, 36, 49, 64, 81
ตัวเลขสามเหลี่ยมคือตัวเลขที่สามารถสร้างรูปสามเหลี่ยมด้านเท่า ตัวเลขสามเหลี่ยม n-th เท่ากับผลรวมของจำนวนธรรมชาติทั้งหมดจาก 1 ถึง n
ตัวเลขสามเหลี่ยม 10 ตัวแรกคือ: ( OEIS )
0, 1, 3, 6, 10, 15, 21, 28, 36, 45
ตัวเลขสามเหลี่ยมจตุรัสคือตัวเลขที่มีทั้งสี่เหลี่ยมจัตุรัสและสามเหลี่ยม
หมายเลขสามเหลี่ยม 10 ตารางแรกคือ: ( OEIS )
0, 1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056, 1882672131025, 63955431761796
มีจำนวนอนันต์ของหมายเลขสแควร์, สามเหลี่ยมและสามเหลี่ยมสแควร์
เขียนโปรแกรมหรือฟังก์ชั่นที่มีชื่อที่ได้รับจำนวนอินพุต (พารามิเตอร์หรือ stdin) n
คำนวณn
จำนวนสามเหลี่ยมที่สามตารางและเอาท์พุท / ส่งกลับโดยที่ n เป็นจำนวนที่ไม่ใช่ศูนย์บวก (สำหรับ n = 1 ผลตอบแทน 0)
สำหรับโปรแกรม / ฟังก์ชั่นที่จะส่งที่ถูกต้องมันควรจะสามารถส่งกลับอย่างน้อยจำนวนสามเหลี่ยมรูปสี่เหลี่ยมจัตุรัสขนาดเล็กกว่า 2 ^ 31-1
โบนัส
-4 ไบต์สำหรับความสามารถในการแสดงผลตัวเลขสามเหลี่ยมทั้งหมดน้อยกว่า 2 ^ 63-1
-4 ไบต์สำหรับความสามารถในการส่งออกในทางทฤษฎีตัวเลขรูปสามเหลี่ยมขนาดใด ๆ
การลงโทษ +8 ไบต์สำหรับวิธีการแก้ปัญหาที่ใช้เวลาแบบไม่พหุนาม
กองซ้อนโบนัส
นี่คือความท้าทายของ code-golf ดังนั้นคำตอบที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
n
n
ฉันไม่คิดว่าเวลาเชิงเส้นจะเป็นไปได้ ถ้าคุณกำลังบอกว่าการดำเนินการทางคณิตศาสตร์เป็นเวลาคงที่?