平成26年度 春期 応用情報技術者試験 午前 問3
次のBNFにおいて非終端記号〈A〉から生成される文字列はどれか。
<R0> ::= 0 | 3 | 6 | 9
<R1> ::= 1 | 4 | 7
<R2> ::= 2 | 5 | 8
<A> ::= <R0> | <A><R0> | <B><R2> | <C><R1>
<B> ::= <R1> | <A><R1> | <B><R0> | <C><R2>
<C> ::= <R2> | <A><R2> | <B><R1> | <C><R0>
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:ア
〈R0〉,〈R1〉,〈R2〉は3で割った余りが0,1,2の数字です。〈A〉,〈B〉,〈C〉の規則を見ると,
- 〈A〉: 3で割った余りが0の数(余り0に余り0の数字を続ける,余り1に余り2を続ける,余り2に余り1を続ける)
- 〈B〉: 3で割った余りが1の数
- 〈C〉: 3で割った余りが2の数
を表しています(末尾に数字を付けると,余りは「元の余り × 10 + 数字」を3で割った余り,つまり「元の余り + 数字」の余りになります)。したがって,〈A〉から生成されるのは3の倍数です。
実際に123を追うと,「1」は〈B〉,「12」は〈B〉〈R2〉なので〈A〉,「123」は〈A〉〈R0〉なので〈A〉となります。
-
ア: 123
正しい。123 = 3 × 41 で3の倍数なので,〈A〉から生成されます。 -
イ: 124
誤り。124 を3で割ると余り1なので,〈B〉から生成される文字列です。 -
ウ: 127
誤り。127 を3で割ると余り1なので,〈B〉から生成される文字列です。 -
エ: 128
誤り。128 を3で割ると余り2なので,〈C〉から生成される文字列です。
答え
ア: 123
出典:平成26年度 春期 応用情報技術者試験 午前 問3