1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderログ:0003 - ABC 064 A

Last updated at Posted at 2021-07-02

問題

問題文

AtCoDeer君は、赤、緑、青色のカードを持っています。
それぞれのカードには $1$ 以上 $9$ 以下の整数が書かれており、赤色のカードには $r$、緑色のカードには $g$、青色のカードには $b$ が書かれています。
$3$ つのカードを左から順に赤、緑、青色の順に並べ、左から整数を読んだときにこれが $4$ の倍数であるか判定しなさい。

制約

$1 \le r,~g,~b \le 9$

収録されている問題セット

回答

回答1 (AC)

赤、緑、青のカードの値を取り込ん3桁の整数を求め、それが4の倍数になっているか、つまり4で割り切れるかを判定すれば良いでしょう。ここで、百の位が $r$, 十の位が $g$、一の位が $b$ である3桁の整数は $100r+10g+b$ と表せることを利用して、以下のようにコーディングしました。無事、ACでした。

abc064a-1.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int r, g, b;
  cin >> r >> g >> b;

  if ( (100*r+10*g+b)%4==0 ) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
}

回答2 (AC)

回答1でACになりますが、ちょっとだけ改良が可能です。ある整数が4の倍数であるかを判定するには、下2桁が4の倍数かを判定すれば良いことが知られています。これは、3桁目以上の部分は100の倍数、つまり4の倍数であるため、下2桁が4の倍数かを判定することで、整数全体が4の倍数であるかを判定することができるのです。従ってこの問題の場合、十の位が $g$、一の位が $b$ である2桁の整数が4の倍数であるかを判定すれば良いでしょう。コードは以下のようになりました。本来なら変数 $r$ は不要なのですが、何となく残してしまいました。

abc064a-2.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int r, g, b;
  cin >> r >> g >> b;
  
  if ( (10*g+b)%4==0 ) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
}

調べたこと

AtCoderの解説コンテスト全体の解説

回答1と同じ解法でした。

学んだこと

倍数の判定法

  • 2の倍数:下1桁が2の倍数(偶数)ならば整数全体も2の倍数
  • 3の倍数:各桁の数字の和が3の倍数ならば整数全体も3の倍数
  • 4の倍数:下2桁が4の倍数ならば整数全体も4の倍数
  • 5の倍数:下1桁が5の倍数ならば(0 or 5)整数全体も5の倍数
  • 6の倍数:整数が2の倍数かつ3の倍数ならば整数全体は6の倍数
  • 8の倍数:下3桁が8の倍数ならば整数全体も8の倍数
  • 9の倍数:各桁の数字の和が9の倍数ならば整数全体も9の倍数

リンク

前後の記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?