ABC 357

https://atcoder.jp/contests/abc357

A. Sanitize Hands

https://atcoder.jp/contests/abc357/tasks/abc357_a

B. Uppercase and Lowercase

https://atcoder.jp/contests/abc357/tasks/abc357_b

C. Sierpinski carpet

https://atcoder.jp/contests/abc357/tasks/abc357_c

D. 88888888

https://atcoder.jp/contests/abc357/tasks/abc357_d

$N$ の桁数を $d$ とすると $N$ を $N$ 個つなげた整数は

\begin{align*} &N \times 10^{d \times 0} + N \times 10^{d \times 1} + \cdots + N \times 10^{d \times (N-1)} \\ &= N \times \sum_{i=0}^{N-1} (10^d)^i \\ &= N \times \frac{(10^d)^N - 1}{10^d - 1} \end{align*}

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N;
    cin >> N;

    ll d = 0;
    {
        ll t = N;
        while (t) {
            t /= 10;
            d++;
        }
    }

    mint ans = N, ten = 10;
    ans *= (ten.pow(d).pow(N) - 1) / (ten.pow(d) - 1);
    cout << ans.val() << endl;
}

E. Reachability in Functional Graph

https://atcoder.jp/contests/abc357/tasks/abc357_e

F. Two Sequence Queries

https://atcoder.jp/contests/abc357/tasks/abc357_f

G. Stair-like Grid

https://atcoder.jp/contests/abc357/tasks/abc357_g