寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

C言語による自動改札機の開閉の判断

C言語による自動改札機の開閉の判断です。
切符の組み合わせから、自動改札機の扉の開閉を判断するプログラムです。

・問題
 新幹線に乗るためには、「乗車券」「特急券」の2枚の切符が必要です。
 経路の一部で新幹線を利用しない場合があるため、これらは別々の切符となっていますが、新幹線のみを利用する経路では、1枚で乗車券と特急券を兼ねる「乗車・特急券」が発行されることもあります。
 自動改札機では、これらの切符を読み込んで、正しい切符が投入されたときだけゲートを開けなければなりません。
 「乗車券」と「特急券」それぞれ1枚、または、その両方、または、「乗車・特急券」が1枚投入されたかどうかを判定し、自動改札機の扉の開閉を判断するプログラムを作成して下さい。

・入力される値
 入力は以下の形式で与えられる。
   b1 b2 b3
 入力は1行からなり、1つの空白で区切られた3つの整数を含む。
 b1 は「乗車券」の投入状態、b2 は「特急券」の投入状態、b3 は「乗車・特急券」の投入状態を示す。
 投入状態は0または1で表され、0の場合は投入されていない状態、1の場合は投入されている状態を表す。
 ただし、想定される投入状態の組み合わせは以下の場合のみとする。

入力 投入状態 投入に対する扉の動作
1 0 0 「乗車券」のみ投入 Close
0 1 0 特急券」のみ投入 Close
1 1 0 「乗車券」と「特急券」投入 Open
0 0 1 「乗車・特急券」投入 Open
0 0 0 投入なし Close

・期待する出力
 自動改札機の開閉を表すOpenまたはCloseを1行に出力する。

僕が作成、提出したコードは、以下のとおりです。

/*
 Problem Set from Volume2 0257 : Railway Ticket
 http://judge.u-aizu.ac.jp/
 C言語による自動改札機の開閉の判断
 https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
int main(void){
    int b1,b2,b3;
    scanf("%d %d %d",&b1,&b2,&b3);
    if(b1==0 && b2==0 && b3==0){
        printf("Close\n");
    }else if(b1==1 && b2==0 && b3==0){
        printf("Close\n");
    }else if(b1==0 && b2==1 && b3==0){
        printf("Close\n");
    }else if(b1==0 && b2==0 && b3==1){
        printf("Open\n");
    }else if(b1==1 && b2==1 && b3==0){
        printf("Open\n");
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Problem Set from Volume2 0257 : Railway Ticket