A soma dos quadrados dos dez primeiros números naturais é:
O quadrado da soma dos dez primeiros números naturais é,
Portanto, a diferença entre a soma dos quadrados dos dez primeiros números naturais e o quadrado da soma é
Para uma determinada entrada n, encontre a diferença entre a soma dos quadrados dos primeiros n números naturais e o quadrado da soma.
Casos de teste
1 => 0
2 => 4
3 => 22
10 => 2640
24 => 85100
100 => 25164150
Esse desafio foi anunciado pela primeira vez no Projeto Euler # 6 .
Critérios Vencedores
Não há regras sobre qual deve ser o comportamento com entrada negativa ou zero.
A resposta mais curta vence.
n
?Respostas:
Geléia ,
54 bytesExperimente online!
Quão?
Implementos∑ni = 2(i2(i−1)) ...
fonte
Python 3 ,
2827 bytes-1 graças a xnor
Experimente online!
Implementosn(n−1)(n+1)(3n+2)/12
Python 2,
29 e28 bytes:lambda n:(n**3-n)*(3*n+2)/12
fonte
n*~-n**2*
ou(n**3-n)*
.APL (Dyalog Unicode) , 10 bytes
Experimente online!
Como funciona
Usa o fato de que "quadrado da soma" é igual a "soma dos cubos".
fonte
(1⊥⍳×⍳×1-⍨⍳)10
.TI-Basic (série TI-83),
1211 bytesImplementos( n22) (12+ 13 n) . Recebe entrada
Ans
: por exemplo, execute10:prgmX
para calcular o resultado da entrada10
.fonte
nCr
!Flacidez Cerebral ,
74726864 bytesExperimente online!
Maneira bastante simples de fazer isso com algumas mudanças complicadas. Espero que alguém encontre mais alguns truques para tornar isso ainda mais curto.
fonte
Carvão ,
1210 bytesExperimente online! Link é a versão detalhada do código. Explicação:( ∑n1x )2= ∑n1x3 de modo ( ∑n1x )2- ∑n1x2= ∑n1( x3- x2) = ∑n1( x - 1 ) x2= ∑n - 10 0x ( x + 1 )2 .
fonte
Perl 6 , 22 bytes
Experimente online!
fonte
Japonês
-x
,9854 bytesTente
Explicação
fonte
JavaScript, 20 bytes
Experimente online
fonte
APL (Dyalog), 17 bytes
(Muito mais tempo) Resposta do porto de Jonathan Allan Jelly.
Experimente online!
fonte
+/¯1↓⍳×1⌽⍳×⍳
APL (Dyalog) , 16 bytes
Experimente online!
fonte
(+/×⍨)
→1⊥×⍨
conforme dica .⍳
interior(×⍨1⊥⍳)-⍳+.×⍳
Mathematica,
2117 bytes-4 bytes graças a alefhalpha .
Função pura. Pega um número inteiro como entrada e retorna um número inteiro como saída. Apenas implementa o polinômio, pois
Sum
s,Range
s,Tr
s, etc. ocupam muitos bytes.fonte
(3#+2)(#^3-#)/12&
#.(#^2-#)&@*Range
implementa outra solução comum. (Mas também é 17 bytes.) E nós podemos implementar o algoritmo ingênuo em 18 bytes:Tr@#^2-#.#&@*Range
.Java (JDK) , 23 bytes
Experimente online!
fonte
dc , 16 bytes
Implementos( n3- n ) ( 3 n + 2 ) / 12
Experimente online!
fonte
05AB1E , 8 bytes
Explicação:
Experimente online!
fonte
LDnOsOn-
foi a minha primeira tentativa também.C, C ++,
464037 bytes (#define),504746 bytes (função)-1 byte graças a Zacharý
-11 bytes graças ao ceilingcat
Versão macro:
Versão da função:
Essas linhas são baseadas nessas 2 fórmulas:
Soma dos números entre 1 e n =
n*(n+1)/2
Soma dos quadrados entre 1 e n =
n*(n+1)*(2n+1)/6
Portanto, a fórmula para obter a resposta é simplesmente
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
E agora, para "otimizar" a contagem de bytes, quebramos os parênteses e movemos as coisas, enquanto o teste sempre dá o mesmo resultado
(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
Observe o padrão
p = n*n+1 = n*n+n
, portanto, na função, declaramos outra variávelint p = n*n+n
e ela fornece:p*p/4 - p*(2n+1)/6
Por
p*(p/4-(2*n+1)/6)
isson*(n+1)*(n*(n+1)/4 - (2n+1)/6)
, funciona apenas na metade do tempo, e suspeito que a divisão inteira seja a causa (f(3)
dando 24 em vez de 22,f(24)
dando 85200 em vez de 85100, por isso não podemos fatorar a fórmula da macro dessa maneira, mesmo que matematicamente seja o mesmo.Tanto a macro quanto a versão da função estão aqui devido à substituição da macro:
F (3) dá
3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F (5-2) dá
5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30
e mexer com a precedência do operador. a versão da função não tem esse problema
fonte
n
por(n)
. Além disso,F(n) n
=>F(n)n
independentemente.return p*p/4-p*(n-~n)/6
parareturn(p/4-(n-~n)/6)*p
.JavaScript (ES6), 22 bytes
Experimente online!
fonte
Pitão, 7 bytes
Experimente online aqui .
Usa a fórmula na resposta de Neil .
fonte
SNOBOL4 (CSNOBOL4) ,
7069 bytesExperimente online!
fonte
Pari / GP , 21 bytes
Experimente online!
fonte
05AB1E , 6 bytes
Experimente online!
Explicação
Algumas outras versões no mesmo byte contam:
L<ān*O
Ln.āPO
L¦nā*O
fonte
R , 28 bytes
Experimente online!
fonte
sum(x<-1:scan())^2-sum(x^2)
para -1MathGolf , 6 bytes
Experimente online!
Calcula∑nk = 1( k2( k - 1 ) )
Explicação:
fonte
Clojure , 58 bytesExperimente online!
Edit: Eu entendi mal a pergunta
Clojure ,
55, 35 bytesExperimente online!
fonte
(apply +
é menor que(reduce +
.cQuents ,
1715 bytesExperimente online!
Explicação
fonte
APL (NARS), 13 caracteres, 26 bytes
use a fórmula Sum'w = 1..n '(w w (w-1)) possível eu escrevi o mesmo algum outro escreveu + ou - como "1⊥⍳ × ⍳ × ⍳-1"; teste:
fonte
Stax , 4 bytes
Execute e depure
Para todos os
k
números inteiros positivos até a entrada, adicionek^2 * (k-1)
.fonte
QBASIC,
4544 bytesA matemática pura economiza 1 byte!
Experimente ISSO online!
Resposta anterior, baseada em loop
Experimente online!
Observe que o REPL é um pouco mais expandido porque o intérprete falha de outra maneira.
fonte
JAEL ,
1310 bytesExperimente online!
Explicação (gerada automaticamente):
fonte
05AB1E , 6 bytes
Experimente online!
Explicação:
Æ
não é útil com frequência, mas é hora de brilhar. Isso bate o ingênuoLOnILnO-
por dois bytes inteiros.fonte