基本情報技術者平成20年秋期 午前問9

問9

関数eq(X, Y)は,引数XとYの値が等しければ1を返し,異なれば0を返す。整数A,B,C について,eq(eq(A,B),eq(B,C))を呼び出したとき,1が返ってくるための必要十分条件はどれか。
  • (A=B かつ B=C) 又は (A≠B かつ B≠C)
  • (A=B かつ B=C) 又は (A≠B 又は B≠C)
  • (A=B かつ B=C) 又は A=C
  • (A=B 又は B=C) 又は A=C
  • [出題歴]
  • 基本情報技術者 H16春期 問8

分類

テクノロジ系 » 基礎理論 » 応用数学

正解

解説

関数eq(X, Y)は、2つの引数が等しい場合に1を返すので、eq(eq(A,B),eq(B,C))の結果が1となるには、eq(A,B)=eq(B,C)であることが条件になります。

eq(A,B)=eq(B,C) となるケースには以下の2つがあります。
  1. eq(A,B)=eq(B,C)=1
  2. eq(A,B)=eq(B,C)=0
まず、①となるのは、A=B かつ B=C の条件を満たした場合、つまり3つの値が同じときです。
  • A=B=C=1のとき、eq(1,1)=eq(1,1)=1
  • A=B=C=0のとき、eq(0,0)=eq(0,0)=1
次に、②となるのは、A≠B かつ B≠C の条件を満たした場合です。
  • A=0、B=1、C=0のとき、eq(0,1)=eq(1,0)=0
  • A=1、B=0、C=1のとき、eq(1,0)=eq(0,1)=0
eq(A,B)=eq(B,C)が1を返すのは、以上のいずれかの条件を満たしたときなので、1を返すための必要十分条件は、2つの条件を or(又は) で連結した「ア:(A=B かつ B=C) 又は (A≠B かつ B≠C)」となります。
  • 正しい。本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は真であり、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 も真なので、必要十分条件となります。
  • 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は偽(反例:A=1、B=1、C=2)ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 は真なので、必要条件ではありますが十分条件ではありません。
  • 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は真ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 は偽(反例:A=1、B=2、C=3)なので、十分条件ではありますが必要条件ではありません。
  • 本条件 ⇒ eq(eq(A,B),eq(B,C)) = 1 は偽(反例:A=1、B=1、C=2)ですが、eq(eq(A,B),eq(B,C)) = 1 ⇒ 本条件 も偽(反例:A=1、B=2、C=3)なので、必要条件でも十分条件でもありません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop