結果
問題 | No.1235 ζ関数 |
ユーザー |
![]() |
提出日時 | 2020-09-22 20:39:23 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 246 ms / 2,000 ms |
コード長 | 1,473 bytes |
コンパイル時間 | 183 ms |
コンパイル使用メモリ | 13,056 KB |
実行使用メモリ | 34,724 KB |
最終ジャッジ日時 | 2024-06-26 11:13:51 |
合計ジャッジ時間 | 6,147 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 21 |
ソースコード
import sys#import collections as colinput=sys.stdin.readlineenum=enumerateinf=1001001001eps=1e-7upb=1e+4lmax=300mod = 10**9+7NN = 2 * 10**5g1 = [1, 1] # factorialg2 = [1, 1] # factorial^(-1)inverse = [0, 1] # tmpdef linput(ty=int, cvt=list):return cvt(map(ty,input().split()))def vinput(rep=1, ty=int, cvt=list):return cvt(ty(input().rstrip()) for _ in "*"*rep)def modinv(x, mod=mod):return pow(x, mod-2, mod)def ratioal(x, y, mod=mod):### = x/y (mod m)re = x * modinv(y)return re % moddef facto(x, y, mod):### y*(y+1)*...*(x-1)*x### = x!/(y-1)!re = 1for i in range(y, x+1):re *= ire %= mod#print(re, file=sys.stderr)return redef comb(n, r, mod=mod):if ( r<0 or r>n ):return 0#r = min(r, n-r)#return facto(n, n-r+1, mod) * g2[r] % modreturn g1[n] * g2[r] * g2[n-r] % moddef init_fac():for i in range( 2, NN + 1 ):g1.append( ( g1[-1] * i ) % mod )inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )g2.append( (g2[-1] * inverse[-1]) % mod )init_fac()def zeta(s):out = 0.pp = float(inf)for m in range(1,lmax+1):ins = 0.for j in range(1,m+1):c1 = (-1)**(j-1)c2 = comb(m-1, j-1)c3 = j**(-s)ins += c1*c2*c3ins *= 2**(-m) / (1 - 2**(1-s))out += insif abs(pp - ins) < eps:breakif abs(out) > upb:breakpp = insreturn outdef main():N, = linput()res = zeta(N)print(res)if __name__=="__main__":main()