けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 237 A - Not Overflow (7Q, 灰色, 100 点)

オーバーフローについて学ぶ問題。

問題概要

与えられた整数  N -2^{31} 以上  2^{31} 未満であるかどうかを判定せよ。

解法

まず、 -2^{31} 以上  2^{31} 未満に収まらないような数は int 型では扱えない。long long 型を使おう。

そして、 2^{31}1LL<<31 と表せる。ここで、念のために long long 型の値 1LL に適用している。

コード

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

long long LIM = 1LL<<31;

int main() {
    long long N;
    cin >> N;
    if (-LIM <= N && N < LIM)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}