0
0

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ログ:0002 - ABC 086 A

Last updated at Posted at 2021-07-01

問題

問題文

シカのAtCoDeerくんは二つの正整数 $a, b$ を見つけました。$a$ と $b$ の積が偶数か奇数か判定してください。

制約

・$1 \le a, b \le 10000$
・$a,b$ は整数

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

回答

回答1 (AC)

AtCoder で最初に解いた問題です。正整数 $a,b$ を受け取り、積が偶数か奇数かを判定する流れをそのままコーディングすれば良さそうです。以下のようなコードで無事ACとなりました。

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

  if ( (a*b)%2==1 ) {
    cout << "Odd" << endl;
  } else {
    cout << "Even" << endl;
  }
}

回答2 (AC)

2つの整数の積は、両方の整数が奇数なら奇数、それ以外は偶数になるので、積が偶数か奇数かの判定をする上で積計算は必要ありません。この性質を利用したコードは以下のようになり、もちろんACとなりました。

abc086a-2.cpp
#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int a, b;
  cin >> a >> b;
 
  if ( a%2==1 && b%2==1 ) {
    cout << "Odd" << endl;
  } else {
    cout << "Even" << endl;
  }
}

今回の場合、正整数 $a,b$ は高々14ビット(10000以下)なので、積は高々28ビットであり、C++ の整数型(int)は32ビットであることから、積を計算しても桁あふれは起きません。従ってこのコードは用心しすぎなのですが、一般に計算せずに計算結果の性質を判定できる場合には、計算せずに判定すべきです。

調べたこと

AtCoderに登録したら次にやることの解説

回答とほぼ同じ解法でした。

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

こちらも同じ解法でした。

学んだこと

  • C++ の標準入力 (整数型)
  • C++ の整数型(int)は32ビット

リンク

前後の記事

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?