問題概要
$N$ 項からなる数列 ${ a_n }$ が与えられる.この数列の値の内,奇数番目にある奇数の数を求めよ.
制約
- $1 \leq N, a_i \leq 100$
解法
(言語ごとに変わる)何らかの方法で着数番目の要素だけをイテレートして,奇数の数を数えることで解くことができます.
以下の Haskell の例では,cycle [ True, False ] と zip してから filter snd をすることで奇数番目を取り出し,map fst してから filter odd することで奇数を抜き出しています.
この開放の場合,$a$ を定数回走査しているので $\Theta( N )$ 時間です.
コード
main = getLine >> readInts >>= print . length . filter odd . map fst . filter snd . flip zip ( cycle [ True, False ] )