結果

問題 No.3505 Sum of Prod of Root
コンテスト
ユーザー titia
提出日時 2026-04-23 03:21:28
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 948 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 180 ms
コンパイル使用メモリ 84,860 KB
実行使用メモリ 275,012 KB
最終ジャッジ日時 2026-04-23 03:21:37
合計ジャッジ時間 6,865 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 2 WA * 10 RE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

# 解説を見た。
# 一瞬、不可能では? と思ったけど、ちゃんと考えて解ける問題だった。

# k>=3のi**(1/k)で区切ろうというのは思いつく。
# 式変形が大変。
# ただ、k*2<=i<=(k+1)*(k+1)のときint(i**0.5)がkになるということに気付けば、
# 式変形が可能そうだとは思うことは可能そう。

import sys
input = sys.stdin.readline

mod=998244353

N=int(input())

X=[]


def f(n):
    m=int(n**(1/2))+1

    while n<m*m:
        m-=1

    return (m-1)*m*(m+1)*(8*m*m-5*m-2)//20 + m*(n-m*m)*(n+m*m-1)//2

X=[]
for i in range(3,65):
    for j in range(1,10**6+1):
        k=j**i

        if k<=10**18+10000:
            X.append(k)
        else:
            break

X=sorted(set(X))

ANS=0

for i in range(len(X)):
    c=X[i]
    c2=X[i+1]

    if c2>N:
        ANS+=f(N+1)-f(c-1)
        break
    else:
        ANS+=f(c2)-f(c-1)
    ANS%=mod

print(ANS%mod)
    
    
0