以下の解決策を参照してください。建設的なフィードバックをお願いします。
以下のO(n)での実行時間はどれくらいですか。
int a = 0;
int k = n*n*n; //n^3
while(k > 1)
{
for (int j=0; j<k; j++) //runs from 0->k
{ a--; }
k = k/2; //divides by 2 each iteration
}
forループが実行されるたびに、定数xkが得られます。
= 0xn ^ 3 + 1x(n ^ 3/2)+ 2x(n ^ 3/4)+ ... + nx(n ^ 3/2 ^ n)
= n ^ 3(0 + 1/2 + 2 / 4 + ... + n / 2 ^ n)<-これをさらに単純化する方法を知っている人はいますか?
編集:私はどういうわけか算術級数を使用すると仮定しています...。