結果

問題 No.1455 拡張ROTN
ユーザー lam6er
提出日時 2025-03-31 17:34:05
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 45 ms / 2,000 ms
コード長 1,090 bytes
コンパイル時間 234 ms
コンパイル使用メモリ 82,588 KB
実行使用メモリ 60,500 KB
最終ジャッジ日時 2025-03-31 17:34:55
合計ジャッジ時間 2,044 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    S0 = input().strip()
    N = int(input())
    
    replacement = "CpCzNkSuTbEoA"
    
    def process_char(c, k):
        if k == 0:
            return c
        if c.isdigit():
            num = int(c)
            if num == 9:
                new_k = k - 1
                return ''.join(process_char(ch, new_k) for ch in replacement)
            else:
                possible_steps = 9 - num
                if possible_steps >= k:
                    return str(num + k)
                else:
                    new_k = k - possible_steps - 1
                    return ''.join(process_char(ch, new_k) for ch in replacement)
        elif c.isupper():
            shifted = (ord(c) - ord('A') + k) % 26
            return chr(ord('A') + shifted)
        elif c.islower():
            shifted = (ord(c) - ord('a') + k) % 26
            return chr(ord('a') + shifted)
        else:
            return c
    
    result = []
    for char in S0:
        res = process_char(char, N)
        result.append(res)
    print(''.join(result))

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