2017-09-23 5 views
-2

Ich möchte eine Formel finden, um diese Berechnung für ein Programmierprojekt durchzuführen, aber ich kann den Namen dieses Ausdrucks nicht herausfinden. Nehmen wir an, ich habe eine Nummer 3. Zuerst muss ich alle Zahlen bis zu dieser Zahl finden .. so { 1, 2, 3 } Jetzt muss ich die Zahlen addierenSumme aufeinanderfolgender Zahlen bis zur angegebenen Nummer

((1) + (2) + (3) + (1 + 2) + (1 + 3) + (2 + 3) + (1 +2 +3)) = 24 

Wie dieser Begriff genannt wird, und gibt es eine Formel für das? Ich habe verschiedene Wege in PHP versucht, um diese Aufgabe zu erfüllen, aber meine Formel ist falsch. Danke für Ihre Hilfe

+0

Haben Sie bedeuten, dass Sie alle positiven ganzen Zahlen in Folge vor der Nummer müssen? – synchronizer

+0

@synchronizer ja, alle fortlaufenden Nummern bis zur angegebenen Nummer. – Rafael

+0

Es sieht so aus, als ob Sie die Summe aller Teilmengen der Menge 1, ... n berechnen. – synchronizer

Antwort

0

Für solche Probleme schreibe ich normalerweise die ersten Beispiele und sehe, wo es mich braucht, d. H. Wenn ich irgendwelche Muster sehe.

f(2) = 
(1)+(2) 
+(1+2) 
= 2*(1+2) = 6 

f(3) = 
(1)+(2)+(3) 
+(1+2)+(1+3)+(2+3) 
+(1+2+3) 
= 4*(1+2+3) = 24 

f(4) = 
(1)+(2)+(3)+(4) 
+(1+2)+(1+3)+(1+4)+(2+3)+(2+4)+(3+4) 
+(1+2+3)+(1+2+4)+(1+3+4)+(2+3+4) 
+(1+2+3+4) 
= 8*(1+2+3+4) = 80 

So vereinfacht das Problem nach unten:

f(x) = 2^(x-1)*(x+(x-1)+...+2+1) 

Auch ist die Formel für (x+(x-1)+...+2+1) bekannt, die x*(x+1)/2 ist. Daher ist die Formel:

f(x) = 2^(x-1)*x*(x+1)/2 

können wir jedoch weiter 2^(x-1)/2-2^(x-2) vereinfachen.

Daher ist die endgültige Formel lautet:

f(x) = 2^(x-2)*x*(x+1) 

einige Beispiele Der Versuch, es zu überprüfen, funktioniert:

f(2) = 2^(0)*2*3 = 6 

f(3) = 2^(1)*3*4 = 24 

f(4) = 2^(2)*4*5 = 80 
Verwandte Themen