Please sign in first.
公式
A - Not Overflow 解説
by
A - Not Overflow 解説
by
mechanicalpenciI
問題文の指示通り、入力を整数で受け取って、\(-2^{31}\) 以上 \(2^{31}\) 未満であるかを判定すればよいです。 \(32\) bit の符号付き整数型では \(2^{31}\) より大きい数はもちろん、 \(2^{31}\) 自身もオーバーフローしてしまう事に注意してください。
c++による実装例:
#include <bits/stdc++.h>
using namespace std;
int main(void) {
long long n;
long long m = (long long)1 << 31;
//long long m = 1 << 31; では右辺が (int)1<<31 として計算されるためオーバーフローし(=-(2 の31 乗)になります)、その値が long long 型に直され m に代入されてしまいます。
//long long m = 2147483648; は問題ありません
cin >> n;
if ((-m <= n) && (n < m))cout << "Yes" << endl;
else cout << "No" << endl;
return 0;
}
pythonによる実装例:
n=int(input())
if -2**31<=n and n<2**31:
print("Yes")
else:
print("No")
投稿日時:
最終更新: