2012-03-20 3 views
0

私は次の要件を満たしています(t-sqlまたはcrunchで開発するにはCLR)。可変幾何系列に整数が存在するかどうかを調べる

Iは、与えられた数(X)の数値配列が開始番号(Y)と乗算器(Z)に基づいて可変である数値配列に存在するかどうかを確認する必要があります。

は、次の例を見てみましょう:

Y = 5 
Z = 2 (known as the 'common ratio' in the math-world i think) 

シーケンスは次のようになり、5, 10, 20, 40, 80 &ので、私はその後、Xが所定の配列に存在するかどうかを確認する必要があり

に。

問題は、X,Y & Zが完全に可変です。

& Zに基づく配列に対してXをテストするための数式は何ですか?

私はこれをT-SQLで書いていますが、任意の言語で回答を投稿することができます&私はそれに応じて適応します。

私は現在、これを読んでいます: http://en.wikipedia.org/wiki/Geometric_progressionこれを理解しようとしましたが、誰かがすでにそれをしている/解決策を知っていると思います。

多くのありがとうございます。

答えて

2

まあ、純粋なSQLソリューションは、完全に

with anchor as (
    select @y as num 
), 
progression as (
    select num from anchor 

    union all 

    select num * @z from progression where num * @z <= @x 
) 
select case when exists (select 0 from progression where num = @x) then 1 else 0 end 
+0

1作品だろう。ありがとうございました – HeavenCore

3

私は= 0,1,2,3、...

あなたは

i = Log[x/y]/Log[z] 

としてiのためにこれを解決することができるためにあなたの順序を

x = y*z^i 

を評価することによって作成されますLog[0]を避けて、iが整数であるか、またはこれが浮動小数点数で動作するので、受け入れ可能に近い整数を返すように注意してください。 iが(許容誤差内で)整数の場合、xはシリーズ内のその位置にあります。

関連する問題