知恵袋ユーザーさん
2020/5/24 1:47
1回答
以下の問題についてです。
以下の問題についてです。 --- 正直者と嘘つきで構成されたn人の村があります。正直者は常に本当の事を言い、嘘つきは本当の事の逆しか言いません。 探偵であるあなたは、この村の誰が正直者で、誰が嘘つきなのかを突き止めるべく、村人に聞き込み調査調査を行いました。 その時の調査メモが以下の形式で残っています。 1 said 2 was an honest person. 3 said 1 was a liar. 最初の文は、1さんが「2さんは正直者だ」と発言したことを、次の文は3さんが「1さんは嘘つきだ」と 発言したことをそれぞれ表します。 あなたは調査メモを元に、全ての村人について正直者であるか嘘つきであるかを推測しようと思いましたが、 各村人の発言内容によっては唯一に定まらない場合があることに気が付きました。そこで探偵であると同時に 優秀なプログラマであるあなたは、とりあえず調査メモと矛盾しないような村人達の正直者・嘘つきの組み合わせ が何通り考えられるのかを数え上げるプログラムを作成することにしました。 しかし、この組み合わせの数がとても大きくなる可能性があることに気が付いてしまったので、 大体何桁くらいの値になるかだけ分かればいいやと考えました。 調査メモと矛盾しない各村人の正直者・嘘つきの組み合わせの通り数をSとしたとき、 Sを二進数で表すのに必要な桁数を答えて下さい。 S=0の場合(矛盾しない組み合わせが存在しない場合)、-1と答えて下さい。 --- 例題として以下のようなものがありました。 (例1) 1 said 3 was an honest person. 2 said 3 was a liar. 5 said 4 was an honest person. (答) 3 (例2) 3 said 2 was a liar. 3 said 1 was a liar. 1 said 1 was a liar. 3 said 2 was an honest person. (答) -1 例1と例2の結果について、解説していただきたいです。 また、「調査メモと矛盾しない各村人の正直者・嘘つきの組み合わせの通り数」とは具体的に何なのでしょうか? よろしくお願いいたします。