結果

問題 No.653 E869120 and Lucky Numbers
ユーザー gew1fw
提出日時 2025-06-12 19:56:09
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,500 bytes
コンパイル時間 227 ms
コンパイル使用メモリ 82,064 KB
実行使用メモリ 76,212 KB
最終ジャッジ日時 2025-06-12 19:56:59
合計ジャッジ時間 2,511 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 30 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    import sys
    p = sys.stdin.read().strip()
    if not p:
        print("No")
        return
    reversed_p = p[::-1]
    
    current_states = set()
    current_states.add((0, False, False))  # (carry, a_ended, b_ended)
    
    for i in range(len(reversed_p)):
        digit = int(reversed_p[i])
        next_states = set()
        for (carry, a_end, b_end) in current_states:
            a_digits = []
            if a_end:
                a_digits.append(0)
            else:
                a_digits.extend([6, 7])
                a_digits.append(0)  # option to end a now
            
            b_digits = []
            if b_end:
                b_digits.append(0)
            else:
                b_digits.extend([6, 7])
                b_digits.append(0)  # option to end b now
            
            for a_d in a_digits:
                for b_d in b_digits:
                    s = a_d + b_d + carry
                    if s % 10 != digit:
                        continue
                    new_c = s // 10
                    new_a_end = a_end or (a_d == 0 and not a_end)
                    new_b_end = b_end or (b_d == 0 and not b_end)
                    next_states.add((new_c, new_a_end, new_b_end))
        current_states = next_states
        if not current_states:
            break
    
    for (carry, a_end, b_end) in current_states:
        if carry == 0:
            print("Yes")
            return
    print("No")

if __name__ == "__main__":
    main()
0