はまやんはまやんはまやん

hamayanhamayan's blog

Palindrome with leading zeros [AtCoder Beginner Contest 198 B]

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