ABC 193

https://atcoder.jp/contests/abc193

A. Discount

https://atcoder.jp/contests/abc193/tasks/abc193_a

B. Play Snuke

https://atcoder.jp/contests/abc193/tasks/abc193_b

C. Unexpressed

https://atcoder.jp/contests/abc193/tasks/abc193_c

D. Poker

https://atcoder.jp/contests/abc193/tasks/abc193_d

愚直に確率を計算するだけ。

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

    ll K;
    string S, T;
    cin >> K >> S >> T;

    vll cnt(10, K);
    rep(i, 4) {
        cnt[S[i] - '0']--;
        cnt[T[i] - '0']--;
    }

    auto score = [&](string s) -> ll {
        vll used(10);
        for (char c : s)
            used[c - '0']++;
        ll ans = 0;
        rep2(i, 1, 10) {
            ans += i * intpow(10, used[i]);
        }
        return ans;
    };

    ll ans = 0;
    S[4] = T[4] = '0';
    rep2(i, 1, 10) {
        rep2(j, 1, 10) {
            S.back() = '0' + i;
            T.back() = '0' + j;

            if (score(S) <= score(T))
                continue;

            ans += cnt[i] * (cnt[j] - (i == j));
        }
    }

    ll rem = K * 9 - 8;
    printf("%.9lf\n", (double)ans / (double)(rem * (rem - 1)));
}

E. Oversleeping

https://atcoder.jp/contests/abc193/tasks/abc193_e

F. Zebraness

https://atcoder.jp/contests/abc193/tasks/abc193_f