x*y^0 + x*y^1 + x*y^2 + ... formel dafuer?
-
Hallo Leute.
Ich habe folgendes Problem:
Ich habe einen Behaelter der x Elemente beinhaltet.
Der 2. Behaelter beinhaltet x*y Elemente.
Der 3. x*y*y Elemente
usw.Die Startgroesse X ist konstant, genauso wie der Faktor Y. Variable ist N, die Anzahl der Behaelter. (mit konstant meine ich im C++ Sinne konstant: es sind template parameter).
Nun muss ich moeglichst schnell wissen, wieviele Elemente ich habe, wenn ich N bekomme (X und Y sind mir ja bekannt und konstant).
Mein aktueller Ansatz ist etwas naiv:
int size=0; int factor=1; for(int pos=0; pos < N; ++pos) { size += factor*X; factor*=Y; }
aber gibt es einen eleganteren Weg das ganze uU in konstanter zeit zu loesen?
danke schon mal
-
Geometrische Reihe ... wenn y != 1, dann gilt:
x*(1+y+y^2 + ... y^n) = x(1-y^(n+1))/(1-y)
-
Naja aber die geometrische Reihe hilft ihm da auch nicht weiter. Ich glaube auch nicht dass sich das noch deutlich effizienter berechnen Lässt. Es sei denn Y ist dauerhaft konstant, dass man die Faktoren in einem Array vordefinieren kann, aber das bezweifele ich
-
?
Natürlich hilft ihm da die geometrische Reihe. Er kann damit die Schleife tilgen.
-
It0101 schrieb:
Naja aber die geometrische Reihe hilft ihm da auch nicht weiter.
Warum?
It0101 schrieb:
Es sei denn Y ist dauerhaft konstant, dass man die Faktoren in einem Array vordefinieren kann, aber das bezweifele ich
Y ist konstant. Aber was willst Du mit einem Array?!
-
zu spät