Summe quadratische Differenz


15

Die Summe der Quadrate der ersten zehn natürlichen Zahlen ist 12+22++102=385

Das Quadrat der Summe der ersten zehn natürlichen Zahlen ist,

(1+2+...+10)2=552=3025

Daher ist die Differenz zwischen der Summe der Quadrate der ersten zehn natürlichen Zahlen und dem Quadrat der Summe

3025385=2640

Finden Sie für eine gegebene Eingabe n die Differenz zwischen der Summe der Quadrate der ersten n natürlichen Zahlen und dem Quadrat der Summe.

Testfälle

1       => 0
2       => 4
3       => 22
10      => 2640
24      => 85100
100     => 25164150

Diese Herausforderung wurde erstmals bei Project Euler # 6 angekündigt .

Gewinnkriterien

  • Es gibt keine Regeln für das Verhalten bei negativer oder Null-Eingabe.

  • Die kürzeste Antwort gewinnt.


4
Diese Herausforderung erfordert ein
Gewinnkriterium

2
Dies ist eine Teilmenge dieser Frage
Caird Coinheringaahing

1
Kann die Sequenz mit 0 indiziert werden? dh die natürlichen Zahlen bis zu n?
Jo King


3
@Enigma Ich glaube wirklich nicht, dass dies ein Duplikat des Ziels ist, da viele Antworten hier nicht einfach als Antworten darauf zu werten sind. Das fügt also etwas hinzu.
Jonathan Allan

Antworten:


10

Gelee ,  5  4 Bytes

Ḋ²ḋṖ

Probieren Sie es online!

Wie?

Implementiert ...i=2n(i2(i1))

Ḋ²ḋṖ - Link: non-negative integer, n
Ḋ    - dequeue (implicit range)       [2,3,4,5,...,n]
 ²   - square (vectorises)            [4,9,16,25,...,n*n]
   Ṗ - pop (implicit range)           [1,2,3,4,...,n-1]
  ḋ  - dot product                    4*1+9*2+16*3+25*4+...+n*n*(n-1)


8

APL (Dyalog Unicode) , 10 Bytes

1⊥⍳×⍳×1-⍨⍳

Probieren Sie es online!

Wie es funktioniert

1⊥⍳×⍳×1-⍨⍳
  ⍳×⍳×1-⍨⍳  Compute (x^3 - x^2) for 1..n
1          Sum

Verwendet die Tatsache, dass "Quadrat der Summe" gleich "Summe der Würfel" ist.


Für mich ist 1⊥⍳ × ⍳ × 1-⍨⍳ keine Funktion; Ich habe versucht 1⊥⍳ × ⍳ × 1-⍨⍳10 und für mich nicht kompilieren ...
RosLuP

1
@RosLuP Sie müssen es zuerst einer Variablen zuweisen (wie ich es im TIO-Link getan habe) oder es in ein Paar Klammern einschließen, wie (1⊥⍳×⍳×1-⍨⍳)10.
Bubbler

7

TI-Basic (TI-83-Serie), 12 bis 11 Byte

sum(Ans² nCr 2/{2,3Ans

Anbaugeräte (n22)(12+13n). Nimmt Eingaben aufAns: Zum Beispiel ausführen10:prgmX, um das Ergebnis für die Eingabe zu berechnen10.


Gute Verwendung von nCr!
Lynn


5

Kohle , 12 10 Bytes

IΣEN×ιX⊕ι²

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erklärung: (1nx)2=1nx3 so (1nx)2-1nx2=1n(x3-x2)=1n(x-1)x2=0n-1x(x+1)2.

   N        Input number
  E         Map over implicit range i.e. 0 .. n - 1
        ι   Current value
       ⊕    Incremented
         ²  Literal 2
      X     Power
     ι      Current value
    ×       Multiply
 Σ          Sum
I           Cast to string
            Implicitly print


4

Japt -x, 9 8 5 4 Bytes

õ²í*

Versuch es


Erläuterung

õ        :Range [1,input]
 ²       :Square each
  í      :Interleave with 0-based indices
   *     :Reduce each pair by multiplication
         :Implicit output of the sum of the resulting array


3

APL (Dyalog), 17 Bytes

{+/(¯1↓⍵)×1↓×⍨⍵}⍳

(Viel länger) Port of Jonathan Allans Jelly-Antwort.

Probieren Sie es online!


Gehen Sie stillschweigend und kombinieren Sie die Tropfen:+/¯1↓⍳×1⌽⍳×⍳
Adám


3

Mathematica, 21 17 Bytes

-4 Bytes dank Alephalpha .

(3#+2)(#^3-#)/12&

Funktion pur. Nimmt eine Ganzzahl als Eingabe und gibt eine Ganzzahl als Ausgabe zurück. Implementiert nur das Polynom, da Sums, Ranges, Trs usw. viele Bytes beanspruchen.



@alephalpha Danke!
LegionMammal978

Es ist möglich, dorthin zu gelangen, ohne nur das Polynom auszuwerten: #.(#^2-#)&@*RangeImplementiert eine andere gängige Lösung. (Aber es ist auch 17 Bytes.) Und wir können den naiven Algorithmus in 18 Bytes implementieren: Tr@#^2-#.#&@*Range.
Mischa Lawrow



3

05AB1E , 8 Bytes

ÝDOnsnO-

Erläuterung:

ÝDOnsnO-     //Full program
Ý            //Push [0..a] where a is implicit input
 D           //Duplicate top of stack
  On         //Push sum, then square it
    s        //Swap top two elements of stack
     nO      //Square each element, then push sum
       -     //Difference (implicitly printed)

Probieren Sie es online!


LDnOsOn-war auch mein erster versuch.
Magic Octopus Urn

3

C, C ++, 46 40 37 Bytes (#define), 50 47 46 Bytes (function)

-1 Byte dank Zacharý

-11 bytes dank ceilingcat

Makroversion:

#define F(n)n*n*~n*~n/4+n*~n*(n-~n)/6

Funktionsversion:

int f(int n){return~n*n*n*~n/4+n*~n*(n-~n)/6;}

Diese Zeilen basieren auf diesen 2 Formeln:

Summe der Zahlen zwischen 1 und n = n*(n+1)/2
Summe der Quadrate zwischen 1 und n =n*(n+1)*(2n+1)/6

Die Formel für die Antwort lautet also einfach (n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6

Und jetzt, um die Byteanzahl zu "optimieren", brechen wir die Klammern und verschieben die Daten, während das Testen immer das gleiche Ergebnis liefert

(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

Beachten Sie das Muster p = n*n+1 = n*n+n, also deklarieren wir in der Funktion eine andere Variable int p = n*n+nund es gibt:

p*p/4 - p*(2n+1)/6

Für p*(p/4-(2*n+1)/6)und so n*(n+1)*(n*(n+1)/4 - (2n+1)/6)funktioniert es nur die Hälfte der Zeit, und ich vermute, dass die Ganzzahldivision die Ursache ist ( f(3)24 statt 22, f(24)85200 statt 85100, also können wir die Formel des Makros nicht so faktorisieren, auch wenn es mathematisch so ist das Gleiche.

Sowohl die Makro- als auch die Funktionsversion sind hier aufgrund der Makrosubstitution:

F (3) ergibt 3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F (5-2) ergibt5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30

und versauen mit dem Operator Vorrang. Die Funktionsversion hat dieses Problem nicht


1
Sie könnten das Problem mit den Makros auf Kosten von vielen Bytes durch Ersetzen alle reparieren nmit (n). Auch F(n) n=> F(n)nunabhängig.
Zacharý

Es ist möglich, neu return p*p/4-p*(n-~n)/6zu ordnen return(p/4-(n-~n)/6)*p.
Zacharý

@ Zacharý Nein, es gibt mir manchmal schlechte Ergebnisse wie 24 anstelle von 22 für die Eingabe "3" oder 85200 anstelle von 85100 für die Eingabe "24". Ich vermute, dass Integer Division die Ursache dafür ist
HatsuPointerKun

Puh, vergiss das immer.
Zacharý


2

Pyth, 7 Bytes

sm**hdh

Probieren Sie es hier online aus .

Verwendet die Formel in Neils Antwort .

sm**hdhddQ   Implicit: Q=eval(input())
             Trailing ddQ inferred
 m       Q   Map [0-Q) as d, using:
    hd         Increment d
   *  hd       Multiply the above with another copy
  *     d      Multiply the above by d
s            Sum, implicit print 



2

05AB1E , 6 Bytes

LnDƶαO

Probieren Sie es online!

Erläuterung

L         # push range [1 ... input]
 n        # square each
  D       # duplicate
   ƶ      # lift, multiply each by its 1-based index
    α     # element-wise absolute difference
     O    # sum

Einige andere Versionen mit derselben Byteanzahl:

L<ān*O
Ln.āPO
L¦nā*O



2

MathGolf , 6 Bytes

{î²ï*+

Probieren Sie es online!

k=1n(k2(k-1))

Erläuterung:

{       Loop (implicit) input times
 î²     1-index of loop squared
    *   Multiplied by
   ï    The 0-index of the loop
     +  And add to the running total

2

Clojure , 58 Bytes

(fn[s](-(Math/pow(reduce + s)2)(reduce +(map #(* % %)s))))

Probieren Sie es online!


Edit: Ich habe die Frage falsch verstanden

Clojure , 55 , 35 Bytes

#(* %(+ 1 %)(- % 1)(+(* 3 %)2)1/12)

Probieren Sie es online!


1
Danke, dass du das behoben hast. Und nur ein Köpfchen nach deinem letzten Eintrag (apply +ist kürzer als (reduce +.
Carcigenicate

@Carcigenicate Danke!
TheGreatGeek

1
Könnten Sie Ihren Permalink bearbeiten, um einen der Testfälle auszuführen? So wie es ist, helfe ich Menschen, die Clojure nicht kennen, nicht.
Dennis

2

cQuents , 17 15 Bytes

b$)^2-c$
;$
;$$

Probieren Sie es online!

Erläuterung

 b$)^2-c$     First line
:             Implicit (output nth term in sequence)
 b$)          Each term in the sequence equals the second line at the current index
    ^2        squared
      -c$     minus the third line at the current index

;$            Second line - sum of integers up to n
;$$           Third line - sum of squares up to n

1

APL (NARS), 13 Zeichen, 26 Byte

{+/⍵×⍵×⍵-1}∘⍳

benutze die Formel Sum'w = 1..n '(w w (w-1)) möglich ich habe dasselbe geschrieben wie einige andere geschrieben + oder - als "1⊥⍳ × ⍳ × ⍳-1"; Prüfung:

  g←{+/⍵×⍵×⍵-1}∘⍳
  g 0
0
  g 1
0
  g 2
4
  g 3
22
  g 10
2640


1

QBASIC, 45 44 Bytes

Rein rechnen spart 1 Byte!

INPUT n
?n^2*(n+1)*(n+1)/4-n*(n+1)*(2*n+1)/6

Versuchen Sie das online!


Vorherige, schleifenbasierte Antwort

INPUT n
FOR q=1TO n
a=a+q^2
b=b+q
NEXT
?b^2-a

Probieren Sie es online!

Beachten Sie, dass die REPL etwas erweitert ist, da der Interpreter sonst ausfällt.


1

JAEL , 13 10 Bytes

#&àĝ&oȦ

Probieren Sie es online!

Erklärung (automatisch generiert):

./jael --explain '#&àĝ&oȦ'
ORIGINAL CODE:  #&àĝ&oȦ

EXPANDING EXPLANATION:
à => `a
ĝ => ^g
Ȧ => .a!

EXPANDED CODE:  #&`a^g&o.a!

COMPLETED CODE: #&`a^g&o.a!,

#          ,            repeat (p1) times:
 &                              push number of iterations of this loop
  `                             push 1
   a                            push p1 + p2
    ^                           push 2
     g                          push p2 ^ p1
      &                         push number of iterations of this loop
       o                        push p1 * p2
        .                       push the value under the tape head
         a                      push p1 + p2
          !                     write p1 to the tapehead
            ␄           print machine state

1

05AB1E , 6 Bytes

LDOšnÆ

Probieren Sie es online!

Erläuterung:

           # implicit input (example: 3)
L          # range ([1, 2, 3])
 DOš       # prepend the sum ([6, 1, 2, 3])
    n      # square each ([36, 1, 4, 9])
     Æ     # reduce by subtraction (22)
           # implicit output

Æist nicht oft nützlich, aber dies ist die Zeit zu glänzen. Dies übertrifft die Naivität LOnILnO-um zwei ganze Bytes.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.