結果

問題 No.3364 Push_back Operation
コンテスト
ユーザー AK_Mi
提出日時 2025-11-17 22:07:53
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 894 bytes
コンパイル時間 6,025 ms
コンパイル使用メモリ 335,008 KB
実行使用メモリ 7,852 KB
最終ジャッジ日時 2025-11-17 22:08:04
合計ジャッジ時間 9,270 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 5 WA * 48
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
ll intpow(ll a, ll b) {
    ll c = 1;
    while (b) {
        if (b & 1) c = (c * a) % 998244353;
        a *= a;
        a %= 998244353;
        b >>= 1;
    }
    return c % 998244353;
}

int main(){
    ll n;
    cin >> n;

    ll ans = 0;

    for(ll i = 1; i * i <= n; i++){
        ll a = n / i;
        ans += intpow(a,i);
        ans %= 998244353;
    }

    ll p = n;

    for(ll i = 1; i * i < n; i++){
        ll a = ll(n / (i+1)) + 1;
        if(i == 1)ans += p - a + 1;
        else{
            ll pows = intpow(i,a);
            ll r = p - a + 1;
            ll wa = (intpow(i,r) - 1)/ (i-1);
            ans += (pows * wa)% 998244353;
        }
        ans %= 998244353;
        p = a - 1;
    }

    cout << ans << '\n';

    return 0;
}
0