Jumlah kuadrat dari sepuluh bilangan alami pertama adalah,
Kuadrat dari jumlah sepuluh bilangan alami pertama adalah,
Oleh karena itu perbedaan antara jumlah kuadrat dari sepuluh bilangan alami pertama dan kuadrat dari jumlah tersebut
Untuk input n yang diberikan, temukan perbedaan antara jumlah kuadrat dari n bilangan alami pertama dan kuadrat dari jumlah.
Uji kasus
1 => 0
2 => 4
3 => 22
10 => 2640
24 => 85100
100 => 25164150
Tantangan ini pertama kali diumumkan di Project Euler # 6 .
Kriteria Menang
Tidak ada aturan tentang apa yang seharusnya menjadi perilaku dengan input negatif atau nol.
Jawaban terpendek menang.
n
?Jawaban:
Jelly ,
54 byteCobalah online!
Bagaimana?
Menerapkan∑ni=2(i2(i−1)) ...
sumber
Python 3 ,
2827 byte-1 terima kasih kepada xnor
Cobalah online!
Menerapkann(n−1)(n+1)(3n+2)/12
Python 2,
2928 byte:lambda n:(n**3-n)*(3*n+2)/12
sumber
n*~-n**2*
atau(n**3-n)*
.APL (Dyalog Unicode) , 10 byte
Cobalah online!
Bagaimana itu bekerja
Menggunakan fakta bahwa "kuadrat jumlah" sama dengan "jumlah kubus".
sumber
(1⊥⍳×⍳×1-⍨⍳)10
.TI-Basic (seri TI-83),
1211 byteImplements(n22)(12+13n) . Membawa input
Ans
: misalnya, jalankan10:prgmX
untuk menghitung hasil untuk input10
.sumber
nCr
!Brain-Flak ,
74726864 byteCobalah online!
Cara yang cukup sederhana untuk melakukannya dengan beberapa perubahan yang rumit. Semoga seseorang akan menemukan beberapa trik untuk membuat ini lebih pendek.
sumber
Arang ,
1210 bytesumber
Perl 6 , 22 byte
Cobalah online!
Menggunakan konstruksi∑ni = 1( saya2( i - 1 ) )
sumber
Japt
-x
,9854 byteCobalah
Penjelasan
sumber
JavaScript, 20 bytes
Try it online
sumber
APL(Dyalog), 17 bytes
(Much longer) Port of Jonathan Allan's Jelly answer.
Try it online!
sumber
+/¯1↓⍳×1⌽⍳×⍳
APL (Dyalog), 16 bytes
Try it online!
sumber
(+/×⍨)
→1⊥×⍨
as per tip.⍳
inside(×⍨1⊥⍳)-⍳+.×⍳
Mathematica,
2117 bytes-4 bytes thanks to alephalpha.
Pure function. Takes an integer as input and returns an integer as output. Just implements the polynomial, since
Sum
s,Range
s,Tr
s, etc. take up a lot of bytes.sumber
(3#+2)(#^3-#)/12&
#.(#^2-#)&@*Range
implements another common solution. (But it's also 17 bytes.) And we can implement the naive algorithm in 18 bytes:Tr@#^2-#.#&@*Range
.Java (JDK), 23 bytes
Try it online!
sumber
dc, 16 bytes
Implements(n3−n)(3n+2)/12
Try it online!
sumber
05AB1E, 8 bytes
Explanation:
Try it online!
sumber
LDnOsOn-
was my first attempt too.C, C++,
464037 bytes ( #define ),504746 bytes ( function )-1 byte thanks to Zacharý
-11 bytes thanks to ceilingcat
Macro version :
Function version :
Thoses lines are based on thoses 2 formulas :
Sum of numbers between 1 and n =
n*(n+1)/2
Sum of squares between 1 and n =
n*(n+1)*(2n+1)/6
So the formula to get the answer is simply
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
And now to "optimize" the byte count, we break parenthesis and move stuff around, while testing it always gives the same result
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
=>n*(n+1)/2*n*(n+1)/2 - n*(n+1)*(2n+1)/6
=>n*(n+1)*n*(n+1)/4 - n*(n+1)*(2n+1)/6
Notice the pattern
p = n*n+1 = n*n+n
, so in the function, we declare another variableint p = n*n+n
and it gives :p*p/4 - p*(2n+1)/6
For
p*(p/4-(2*n+1)/6)
and son*(n+1)*(n*(n+1)/4 - (2n+1)/6)
, it works half the time only, and I suspect integer division to be the cause (f(3)
giving 24 instead of 22,f(24)
giving 85200 instead of 85100, so we can't factorize the macro's formula that way, even if mathematically it is the same.Both the macro and function version are here because of macro substitution :
F(3) gives
3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F(5-2) gives
5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30
and mess up with the operator precedence. the function version does not have this problem
sumber
n
with(n)
. Also,F(n) n
=>F(n)n
regardless.return p*p/4-p*(n-~n)/6
toreturn(p/4-(n-~n)/6)*p
.JavaScript (ES6), 22 bytes
Try it online!
sumber
Pyth, 7 bytes
Try it online here.
Uses the formula in Neil's answer.
sumber
SNOBOL4 (CSNOBOL4),
7069 bytesTry it online!
sumber
Pari/GP, 21 bytes
Try it online!
sumber
05AB1E, 6 bytes
Try it online!
Explanation
Some other versions at the same byte count:
L<ān*O
Ln.āPO
L¦nā*O
sumber
R, 28 bytes
Try it online!
sumber
sum(x<-1:scan())^2-sum(x^2)
for -1MathGolf, 6 bytes
Try it online!
Calculates∑nk=1(k2(k−1))
Explanation:
sumber
Clojure, 58 bytesTry it online!
Edit: I misunderstood the question
Clojure,
55, 35 bytesTry it online!
sumber
(apply +
is shorter than(reduce +
.cQuents,
1715 bytesTry it online!
Explanation
sumber
APL(NARS), 13 chars, 26 bytes
use the formula Sum'w=1..n'(ww(w-1)) possible i wrote the same some other wrote + or - as "1⊥⍳×⍳×⍳-1"; test:
sumber
Stax , 4 byte
Jalankan dan debug itu
Untuk semua
k
bilangan bulat positif hingga input, tambahkank^2 * (k-1)
.sumber
QBASIC,
4544 byteMenghasilkan matematika murni menghemat 1 byte!
Coba online itu!
Sebelumnya, jawaban berbasis loop
Cobalah online!
Perhatikan bahwa REPL sedikit lebih diperluas karena penerjemah gagal sebaliknya.
sumber
JAEL ,
1310 byteCobalah online!
Penjelasan (dihasilkan secara otomatis):
sumber
05AB1E , 6 byte
Cobalah online!
Penjelasan:
Æ
tidak sering berguna, tetapi ini saatnya untuk bersinar. Ini mengalahkan naifLOnILnO-
dengan dua byte penuh.sumber