Official

B - Hard Calculation Editorial by physics0523


全ての非負整数 \(n\) について、「\(A\)\(10^n\) の位」「\(B\)\(10^n\) の位」が \(9\) 以下であれば、繰り上がりは発生しません。
逆に、ある非負整数 \(n\) について、「\(A\)\(10^n\) の位」「\(B\)\(10^n\) の位」が \(10\) 以上であれば、繰り上がりが発生します。
実装が楽な方針としては、下の位から順に検証していくという方法があります。具体的には以下のアルゴリズムを適用します。

  1. \(A\)\(10\) で割った余りと \(B\)\(10\) で割った余りの和を求める。これが \(10\) 以上であれば、繰り上がりが発生するので Hard と出力して終了する。
  2. \(A,B\) それぞれを \(10\) で割る。(小数点以下は切り捨てる。)
  3. 1,2 の操作を続け、\(A,B\) どちらかが \(0\) になっても繰り上がりが検出されなければ、繰り上がりは発生しないので Easy と出力して終了する。

実装例(C++)

#include<bits/stdc++.h>
using namespace std;
int main(){
  long long a,b;
  cin >> a >> b;
  while(a>0 && b>0){
    if((a%10)+(b%10)>=10){cout << "Hard\n";return 0;}
    a/=10;b/=10;
  }
  cout << "Easy\n";
}

posted:
last update: