オーバーフローについて学ぶ問題。
問題概要
与えられた整数 が 以上 未満であるかどうかを判定せよ。
解法
まず、 以上 未満に収まらないような数は int
型では扱えない。long long
型を使おう。
そして、 は 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; }