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 🙂


Anmelden zum Antworten