Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 393 A - Poisonous Oyster | 緑コーダーが解くAtCoder

atcoder.jp

配点: 100 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 10

問題概要

4種類の牡蠣1, 2, 3, 4 があり、このうちちょうど1種類の牡蠣を食べるとお腹を壊してしまう。

高橋君が牡蠣1, 2を食べ、青木君が牡蠣1, 3を食べた。二人がこれによってお腹を壊したかどうかの情報が二つの文字列  S_1, S_2 によって与えられる。具体的には、 S_1=sickあるとき高橋君がお腹を壊したことを、fineであるときお腹を壊さなかったことを表す( S_2 についても同様)。

与えられた情報をもとに、どの種類の牡蠣を食べるとお腹を壊すか判定せよ。

制約

  • 問題文の通り。

考察

高橋君と青木君のお腹の状況は全4パターンあり、お腹を壊す牡蠣はそれぞれ以下のように対応する。

  • 二人ともお腹を壊した : 二人が共通して食べた牡蠣1
  • 高橋君がお腹を壊した : 高橋君のみが食べた牡蠣2
  • 青木君がお腹を壊した : 青木君のみが食べた牡蠣3
  • 二人ともお腹を壊さなかった : 二人とも食べていない牡蠣4

あとはこれを条件分岐で場合分けすればよい。

実装例

#include <bits/stdc++.h>
using namespace std;

// ======================================== //

int main()
{
    string S1, S2;
    cin >> S1 >> S2;

    if (S1 == "sick")
    {
        if (S2 == "sick")
        {
            cout << 1 << endl;
        }
        else
        {
            cout << 2 << endl;
        }
    }
    else
    {
        if (S2 == "sick")
        {
            cout << 3 << endl;
        }
        else
        {
            cout << 4 << endl;
        }
    }

    return 0;
}

atcoder.jp

実装時間: 5分以内

コメント

ABCのA問題でこういう推理パズル系(?)の問題が出るのは久しぶりかも。