プロが教える店舗&オフィスのセキュリティ対策術

にゃんこ先生といいます。

数列a[n]があるとします。
それに仕切りをつけ、群数列とします。
第m群には、b[m]個の数字があるとします。

このとき、第p群のq番目の数字はにゃんでしょうか?
もとの数列の第r項は、第何群の何番目の数字でしょうか?

A 回答 (2件)

> 第p群のq番目の数字はにゃんでしょうか?



第p群ではなく、第p-1群の最後の数が何番目かを考えます。
「第p-1群最後の数」の次の数が「第p群1番目の数」になります。

第m群の数字の個数はb[m]なので、第1群~第p-1群までの数字の個数は、

Σ(k = 1 ~ p-1) b[k]

となります。
とりあえずf(p) = Σ(k = 1 ~ p) b[k]と置きます(Σ(k = 1 ~ p-1) b[k]はf(p-1))。
よって第p-1群最後の数はf(p-1)番目。
第p群1番目の数はf(p-1)+1番目、第p群2番目の数はf(p-1)+2番目、……、
第p群q番目の数はf(p-1)+q番目となるので、求める数字はa[f(p-1)+q]となります。

> もとの数列の第r項は、第何群の何番目の数字でしょうか?

タイトルが「公式を作りたい」となっているのですが、これは公式化できない気がします。
f(p) < rを満たす最大のpを探し、f(p) + n = rという関係が成り立つnを見つけます。
この時、a[r]は第p+1群のn番目の数ということになるはずです。
    • good
    • 0

プログラミング的には多重配列の問題になると思います。


数列a(n)を仕切ったときの群数列b(m)のl番面をb(m)(l)と書くことにします。
b(m)の項数をx(m)とします。
b(m)(l)=a(Σx(i)(i=1~m-1)+l)
という関係が成り立つと思います。

>もとの数列の第r項は、第何群の何番目の数字でしょうか?
与えられたnに対して
n>Σx(i)(i=1~m)を満たす最大のmを求めます。
次にl=r-Σx(i)(i=1~m) を求めます。
このときのb(m+1)(l)がa(n)になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!