結果
| 問題 |
No.295 hel__world
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 18:04:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,770 bytes |
| コンパイル時間 | 314 ms |
| コンパイル使用メモリ | 82,300 KB |
| 実行使用メモリ | 159,012 KB |
| 最終ジャッジ日時 | 2025-06-12 18:05:16 |
| 合計ジャッジ時間 | 5,556 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 34 WA * 19 |
ソースコード
def compress(s):
if not s:
return []
res = [s[0]]
for c in s[1:]:
if c != res[-1]:
res.append(c)
return res
def main():
import sys
from collections import defaultdict
# Read S_alpha
s_alpha_line = sys.stdin.readline().strip().split()
s_alpha = {chr(ord('a') + i): int(s_alpha_line[i]) for i in range(26)}
# Read T
t = sys.stdin.readline().strip()
if not t:
print(0)
return
# Compress T
t_compressed = compress(t)
if not t_compressed:
print(0)
return
# Check if any character in T_compressed has S_alpha[c] == 0
for c in t_compressed:
if s_alpha[c] == 0:
print(0)
return
# Count frequency of each character in T_compressed
freq = defaultdict(int)
for c in t_compressed:
freq[c] += 1
# Check if for each c in freq, S_alpha[c] >= freq[c]
for c in freq:
if s_alpha[c] < freq[c]:
print(0)
return
hel_limit = 2 ** 62
product = 1
for c in freq:
m_c = freq[c]
sum_available = s_alpha[c] - m_c
q, r = divmod(sum_available, m_c)
# Compute term = (q+2)^r * (q+1)^(m_c - r)
term = 1
# Compute (q+2)^r
if r > 0:
term *= pow(q + 2, r)
# Compute (q+1)^(m_c - r)
if m_c - r > 0:
term *= pow(q + 1, m_c - r)
# Multiply to product and check overflow
if product > hel_limit // term:
print("hel")
return
product *= term
if product >= hel_limit:
print("hel")
return
print(product)
if __name__ == "__main__":
main()
gew1fw