結果
| 問題 |
No.1929 Exponential Sequence
|
| コンテスト | |
| ユーザー |
lilictaka
|
| 提出日時 | 2022-05-21 11:48:11 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,423 bytes |
| コンパイル時間 | 244 ms |
| コンパイル使用メモリ | 82,384 KB |
| 実行使用メモリ | 85,408 KB |
| 最終ジャッジ日時 | 2024-09-20 11:25:23 |
| 合計ジャッジ時間 | 4,548 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | TLE * 1 -- * 23 |
ソースコード
from bisect import bisect_left
def acum(List):#累積和
rev = [0 for _ in range(len(List))]
for i in range(len(List)):
if i == 0:
rev[i] = List[i]
else:
rev[i] = rev[i-1] + List[i]
return rev
from collections import defaultdict
from itertools import product
n,S = map(int,input().split())
A = list(map(int,input().split()))
cntP = defaultdict(int)
cntQ = defaultdict(int)
if n >= 2:
front = []
back = []
for a in A[:n//2]:
front .append(a)
for a in A[n//2:]:
back.append(a)
for Ks in product([i for i in range(1,33)],repeat = len(front)):
P = 0
for l in range(len(front)):
P += pow(front[l],Ks[l])
if P <= S:
cntP[P] += 1
qlist = set()
for Ks in product([i for i in range(1,33)],repeat=len(back)):
Q = 0
for l in range(len(back)):
Q += pow(back[l],Ks[l])
if Q <= S:
cntQ[Q] += 1
qlist.add(Q)
qlist = sorted(list(qlist))
value = []
for q in qlist:
value.append(cntQ[q])
cum = acum(value)
ans = 0
for p in cntP.keys():
index = bisect_left(qlist,S-p+1) -1
if index == -1:
continue
ans += cntP[p] * cum[index]
print(ans)
else:
for k in range(1,33):
if pow(A[0],k) <= S:
pass
else:
break
print(k-1)
lilictaka