Angka kuadrat adalah angka yang berbentuk di n^2mana n adalah bilangan bulat. Ini juga disebut kuadrat sempurna, karena ketika Anda mengambil root kuadrat Anda mendapatkan bilangan bulat.
10 angka kuadrat pertama adalah: ( OEIS )
0, 1, 4, 9, 16, 25, 36, 49, 64, 81
Bilangan segitiga adalah angka yang dapat membentuk segitiga sama sisi. Angka segitiga ke-n sama dengan jumlah semua bilangan asli dari 1 ke n.
10 angka segitiga pertama adalah: ( OEIS )
0, 1, 3, 6, 10, 15, 21, 28, 36, 45
Angka segitiga kuadrat adalah angka yang berbentuk bujur sangkar dan segitiga.
10 angka segitiga persegi pertama adalah: ( OEIS )
0, 1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056, 1882672131025, 63955431761796
Ada jumlah tak terbatas dari angka kuadrat, angka segitiga, dan angka segitiga kuadrat.
Tulis program atau fungsi bernama yang diberi nomor input (parameter atau stdin) n, hitung nangka segitiga kuadrat dan hasilkan / kembalikan, di mana n adalah bilangan nol bukan yang positif. (Untuk n = 1 mengembalikan 0)
Agar program / fungsi menjadi pengajuan yang valid, program harus dapat mengembalikan setidaknya semua angka segitiga persegi lebih kecil dari 2 ^ 31-1.
Bonus
-4 byte untuk dapat menampilkan semua angka segitiga kuadrat kurang dari 2 ^ 63-1
-4 byte karena secara teoritis dapat menghasilkan angka segitiga persegi dari berbagai ukuran.
+8 byte penalti untuk solusi yang membutuhkan waktu nonpolinomial.
Bonus menumpuk.
Ini adalah tantangan kode-golf, jadi jawaban dengan byte paling sedikit menang.
nlangkah - langkah, dan dalam setiap langkah aritmatika mengambil waktu linier karena jumlah digit tumbuh secara linear n. Saya tidak berpikir waktu linear itu mungkin. Kecuali Anda mengatakan operasi aritmatika adalah waktu yang konstan?
