結果
問題 | No.603 hel__world (2) |
ユーザー |
![]() |
提出日時 | 2025-06-12 16:03:09 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,457 bytes |
コンパイル時間 | 231 ms |
コンパイル使用メモリ | 82,460 KB |
実行使用メモリ | 165,684 KB |
最終ジャッジ日時 | 2025-06-12 16:03:24 |
合計ジャッジ時間 | 4,738 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 WA * 20 |
ソースコード
import sys from collections import defaultdict def main(): MOD = 10**6 + 3 # Read S_alpha S_alpha = list(map(int, sys.stdin.readline().split())) # Read T T = sys.stdin.readline().strip() # Compute runs of T if not T: print(0) return runs = [] prev = T[0] runs.append(prev) for c in T[1:]: if c != prev: runs.append(c) prev = c # Compute m_c for each character m_c = defaultdict(int) for c in runs: m_c[c] += 1 # Check if any character's run count exceeds S_alpha valid = True for c in m_c: idx = ord(c) - ord('a') if m_c[c] > S_alpha[idx]: valid = False break if not valid: print(0) return # Precompute q and rem for each character run_info = defaultdict(lambda: {'q': 0, 'rem': 0, 'current': 0}) for c in m_c: idx = ord(c) - ord('a') s = S_alpha[idx] m = m_c[c] q = s // m rem = s % m run_info[c]['q'] = q run_info[c]['rem'] = rem # Calculate the product product = 1 for c in runs: info = run_info[c] if info['current'] < info['rem']: s_i = info['q'] + 1 info['current'] += 1 else: s_i = info['q'] product = (product * s_i) % MOD print(product % MOD) if __name__ == '__main__': main()