引き続き、過去問を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;
}
}