結果

問題 No.539 インクリメント
ユーザー @abcde@abcde
提出日時 2019-06-16 03:54:41
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
RE  
実行時間 -
コード長 972 bytes
コンパイル時間 90 ms
コンパイル使用メモリ 12,416 KB
実行使用メモリ 11,904 KB
最終ジャッジ日時 2024-05-01 15:02:38
合計ジャッジ時間 1,561 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 31 ms
10,752 KB
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

# -*- coding: utf-8 -*-
import re

# 1. 入力情報取得.
N = int(input())

# 2. 数値をインクリメント.
for i in range(N):
  ans = str(input())
  
  # 2-1. 数値抽出.
  # yuki2006
  # -> 2007
  a = re.sub(r'\D', '', ans)
  if len(a) == 0:
    print(ans)
    continue
  
  # 2-2. 前ゼロの個数チェック.
  lb, lz = len(a), len(str(int(a)))
  zero = lb - lz
  
  # 2-3. 桁上がりのチェック.
  la = len(str(int(a) + 1))
  
  # 2-4. 数値の置き換え.
  a = str(int(a) + 1)
  a = a.zfill(la + zero)
  j = 0
  out = []
  for v in list(ans):
    if v.isdigit():
      out.append(a[j])
      j = j + 1
      # 2-5. 桁上がりは, "0" を 追加.
      if la > lb and j == len(a) - 1:
        out.append("0")
        j = j + 1
    else:
      out.append(v)
  
  # 2-5. 2-4. の for文 が終了してしまい, "0" の 追加が漏れているか確認.
  if j < len(a):
    out.append("0")
  
  # 2-6. 出力.
  out = "".join(out)
  print(out)
0