2017-09-23 10 views
-2

私はプログラミングプロジェクトでこの計算を行う数式を見つけたいと思いますが、私はこの用語の名前を見つけることができません。 私は数字が3だとしましょう。まず私は、この番号までのすべての番号を見つける必要があり..そう{ 1, 2, 3 } 今私は、数字、この用語が呼び出され、このための式があるどのように与えられた数字まで連続した数字の合計

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

を追加する必要がありますか? 私はこのタスクを達成するためにPHPでいくつかの異なる方法を試しましたが、私の公式は間違っています。あなたの助けをありがとう

+0

あなたは番号の前に、すべての正の連続した整数が必要であることを意味するのですか? – synchronizer

+0

@シンクロナイザーはい、指定された番号まですべての連続番号。 – Rafael

+0

セット1、... nのすべてのサブセットの合計を計算しているようです。 – synchronizer

答えて

0

このような問題については、私は通常最初のいくつかの例を書いて、どこにパターンがあるかを見ています。 x*(x+1)/2である、

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

また、(x+(x-1)+...+2+1)ための式が知られている:

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 

そこで問題がまで簡素化されます。したがって、式は次のとおりです。

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

しかし、我々はさらに2^(x-2)2^(x-1)/2を簡素化することができます。

したがって、最終式は次のとおりです。

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

は、いくつかの例をしようとすると、それが動作を確認するために:

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

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

f(4) = 2^(2)*4*5 = 80 
関連する問題