NECプログラミングコンテスト2021(AtCoder Beginner Contest 229) B - Hard Calculation
問題の要約
正整数A,Bが与えられる。
A+Bを(十進法で)計算する時,繰り上がりが生じないならEasy,生じるならHardと出力する。
制約
A,Bは整数
1<=A,B<=10^18
考え方
1,制約からA,Bの値は大きすぎるのでstringで入力をもらう。
2,A,Bを一の位から順に,数字に直し,繰り上がりが発生するかどうか判定していく。
繰り上がった場合10以上になるのでそれで判定する。
3,繰り上がりを聞いているので,A,Bの小さい方の位まで調べればよい。
実際のプログラム
#include<iostream>
#include<string>
using namespace std;
int main(){
string A,B;
cin >> A >> B;
int N = min(A.size(),B.size());
bool check = false;
for(int i = 0; i < N; i++){
int a = stoi(A.substr(A.size()-i-1,1));
int b = stoi(B.substr(B.size()-i-1,1));
if(10 <= a+b){
check = true;
break;
}
}
if(check){
cout << "Hard" << endl;
}else{
cout << "Easy" << endl;
}
return 0;
}