yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

AtCoder Beginner Contest 237 A - Not Overflow

問題の要約
 整数Nが与えられる。Nが-2^31以上かる2^31未満ならばYesを、そうでないならばNoを出力しろ
制約
 -2^63<=N<2^63
入力
 N
考え方
 1,intやlong longでbit数を考えるのではなく、doubleで受け取りdoubleで考える。
 2,後は単純なif文での条件分岐。
実際のプログラム
#include<iostream>
#include<cmath>

using namespace std;

const double max_num = pow(2,31);
const double min_num = -max_num;

int main(){
  double N;
  cin >> N;
  if(min_num <= N && N < max_num){
    cout << "Yes" << endl;
  }else{
    cout << "No" << endl;
  }
  
  return 0;
}