https://atcoder.jp/contests/abc198/tasks/abc198_b
解説
https://atcoder.jp/contests/abc198/submissions/21693209
回文であることをいかに判定するか
計算量が厳しくなければ数字を文字列にして、コピーしたものをひっくり返して一致するか試すのが簡単。
問題を少し読み替える
問題をそのまま解いても問題ないのだが、数を文字列にした先頭に0を追加して回文にできるかという問題は、
数を文字列にして末尾の0をすべて削除したときに回文になっているかと同じ意味になる。
末尾の0をすべて削除したときに回文になっているかを判定しよう。
string N; #define YES "Yes" #define NO "No" void _main() { cin >> N; while (*N.rbegin() == '0') N = N.substr(0, N.length() - 1); string NN = N; reverse(all(NN)); if (N == NN) cout << YES << endl; else cout << NO << endl; }