ARC 165

https://atcoder.jp/contests/arc165

A. Sum equals LCM

https://atcoder.jp/contests/arc165/tasks/arc165_a

自力 AC.

(i) $N$ が素冪のとき

$N = p^x$ とかけるが $A_i$ のいずれかは $A_i = p^x$ とせねばならず $2 \leq n$ という制約では $A_1 + \cdots + A_n = N$ は成立しない。

(ii) $N$ が素冪でないとき

$N$ に含まれる素因数のうち異なる2つを $p$, $q$ ($p < q$) とする. $A_1 = N/p$, $A_2 = N/q$ とすると

\begin{align*} N - A_1 - A_2 &= N - \frac{N}{p} - \frac{N}{q} \\ &= N \left(1 - \frac{1}{p} - \frac{1}{q}\right) \\ &\geq N \left(1 - \frac{1}{p} - \frac{1}{p}\right) \\ &= N \left(1 - \frac{2}{p}\right) \\ &= N \left( \frac{p-2}{p} \right) \\ &\geq 0 ~~~(\because p \geq 2) \end{align*}

これより、$N - A_1 - A_2$ 個の $1$ と $A_1$, $A_2$ からなる $A_i$ は与えられた条件を満たす。

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

    int mx = 1e5;
    vll sieve(mx, 1);
    sieve[0] = sieve[1] = 0;
    rep2(i, 2, mx) {
        for (ll j = i + i; j < mx; j += i) {
            sieve[j] = 0;
        }
    }

    auto factor = [&](ll n) -> vector<pair<ll, ll>> {
        vector<pair<ll, ll>> ret;
        rep2(i, 2, mx) {
            if (n % i != 0) continue;
            ll cnt = 0;
            while (n % i == 0) {
                cnt++;
                n /= i;
            }
            ret.push_back({i, cnt});
        }

        if (n != 1) {
            ret.push_back({n, 1});
        }
        return ret;
    };

    auto cal = [&]() -> void {
        ll N;
        cin >> N;

        auto ret = factor(N);
        yesno(ret.size() != 1);
    };

    int t;
    cin >> t;
    rep(i, t) cal();
}

B. Sliding Window Sort 2

https://atcoder.jp/contests/arc165/tasks/arc165_b

C. Social Distance on Graph

https://atcoder.jp/contests/arc165/tasks/arc165_c

D. Substring Comparison

https://atcoder.jp/contests/arc165/tasks/arc165_d

E. Random Isolation

https://atcoder.jp/contests/arc165/tasks/arc165_e

F. Make Adjacent

https://atcoder.jp/contests/arc165/tasks/arc165_f