Official
B - Hard Calculation Editorial by physics0523
全ての非負整数 \(n\) について、「\(A\) の \(10^n\) の位」「\(B\) の \(10^n\) の位」が \(9\) 以下であれば、繰り上がりは発生しません。
逆に、ある非負整数 \(n\) について、「\(A\) の \(10^n\) の位」「\(B\) の \(10^n\) の位」が \(10\) 以上であれば、繰り上がりが発生します。
実装が楽な方針としては、下の位から順に検証していくという方法があります。具体的には以下のアルゴリズムを適用します。
- \(A\) を \(10\) で割った余りと \(B\) を \(10\) で割った余りの和を求める。これが \(10\) 以上であれば、繰り上がりが発生するので
Hard
と出力して終了する。 - \(A,B\) それぞれを \(10\) で割る。(小数点以下は切り捨てる。)
- 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: