結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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()
0