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

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

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;
}