ABC 363

Table of Contents

D - Palindromic Number

https://atcoder.jp/contests/abc363/tasks/abc363_d

解説 AC

ll intpow(ll x, ll n) {
    long long ret = 1;
    while (n > 0) {
        if (n & 1)
            ret *= x;
        x *= x;
        n >>= 1;
    }
    return ret;
}

void solve() {
    ll N;
    cin >> N;

    if (N == 1) {
        cout << 0 << endl;
        return;
    }

    N--;
    for (ll d = 1;; d++) {
        if (N <= intpow(10, (d - 1) / 2) * 9) {
            ll b = intpow(10, (d - 1) / 2) + N - 1;
            string s = to_string(b);
            s.resize(s.size() * 2 - d % 2, ' ');
            rep(i, d / 2) {
                s[s.size() - i - 1] = s[i];
            }
            cout << s << endl;

            return;
        } else {
            N -= intpow(10, (d - 1) / 2) * 9;
        }
    }
}