Official

A - Rock-paper-scissors Editorial by kyopro_friends


プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは practice contest の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。


この問題では、入力で与えられる \(x\)\(y\) に応じて出力すべき値が変わります。入力としてありえるものは \(9\) 通りなので、全てのパターンを列挙してif文で場合分けして解く事ができます。

実装例(C)

int main(){
  int x, y;
  scanf("%d %d", &x, &y);
  if(x==0 && y==0) puts("0");
  if(x==0 && y==1) puts("2");
  if(x==0 && y==2) puts("1");
  if(x==1 && y==0) puts("2");
  if(x==1 && y==1) puts("1");
  if(x==1 && y==2) puts("0");
  if(x==2 && y==0) puts("1");
  if(x==2 && y==1) puts("0");
  if(x==2 && y==2) puts("2");
}

\(x\)\(y\) が等しいときは \(x\) を出力する」「\(x\)\(y\) が異なるときは \(x\) でも \(y\) でもない値を出力する」と考えることで、場合分けを減らすこともできます。

実装例2(C)

int main(){
  int x, y;
  scanf("%d %d", &x, &y);
  if(x==y) printf("%d", x);
  else printf("%d", 3-x-y);
}

posted:
last update: