[AtCoder]ABC B059 – Comparison[C++]

プログラミング

引き続き、過去問をC++でB問題を解いていきます。

ABC B059 – Comparison

問題

2つの正整数A,Bが与えられるので、その大小を比較してください。

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main () {
  double A, B;
  cin >> A >> B;
 
  if(A > B){
    cout << "GREATER" << endl;
  }else if(A < B){
    cout << "LESS" << endl;
  }else{
    cout << "EQUAL" << endl;
  }
}

制約で、A、Bの桁が100桁まで大きくなるので、long int型でも足りません。なので、double型を使うと簡単に解けてしまいます。ただこれは邪道な感じがします。

他の方の回答を見ると、最初にA、Bをstring型にして、文字数をカウントして比較しています。もし、文字数が同じだった場合は、先頭から一文字ずつ取り出して比較して、答えを出力しています。下記に示しておきます。
この問題に限らず、大事なのは数値を扱っているからと言って、int型などの数値型を使うとは限らない、ということです。特に桁数などを調べる時はstring型を使った方が便利だったりしますので、覚えておくといいですね。

#include <bits/stdc++.h>
using namespace std;
 
int main () {
  string A, B;
  cin >> A >> B;
 
  if(A.size() > B.size()){
    cout << "GREATER" << endl;
  }else if(A.size() < B.size()){
    cout << "LESS" << endl;
  }else{
    for(int i = 0; i < A.size(); i++){
      if(A[i] > B[i]){
        cout << "GREATER" << endl;
        exit(0);
      }else if(A[i] < B[i]){
        cout << "LESS" << endl;
        exit(0);
      }
    }
    cout << "EQUAL" << endl;
  }
}
タイトルとURLをコピーしました