結果

問題 No.539 インクリメント
ユーザー くれちーくれちー
提出日時 2017-07-01 00:20:34
言語 C#(csc)
(csc 3.9.0)
結果
TLE  
実行時間 -
コード長 2,931 bytes
コンパイル時間 3,460 ms
コンパイル使用メモリ 115,848 KB
実行使用メモリ 47,556 KB
最終ジャッジ日時 2024-10-04 22:15:53
合計ジャッジ時間 6,916 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 41 ms
33,044 KB
testcase_01 AC 343 ms
47,556 KB
testcase_02 AC 332 ms
41,584 KB
testcase_03 TLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

#pragma warning disable IDE0011
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Text;
using static System.Convert;
using static System.Math;
using static Extentions;

class IO
{
    int idx;
    string[] line;

    public void R(params char[] sep) { line = Console.ReadLine().Split(sep); idx = 0; }
    public string S => line[idx++];
    public string[] Ss => line.Skip(idx++).ToArray();
    public char C => char.Parse(line[idx++]);
    public char[] Cs => line.Skip(idx++).Select(char.Parse).ToArray();
    public int I => int.Parse(line[idx++]);
    public int[] Is => line.Skip(idx++).Select(int.Parse).ToArray();
    public long L => long.Parse(line[idx++]);
    public long[] Ls => line.Skip(idx++).Select(long.Parse).ToArray();
    public double F => double.Parse(line[idx++]);
    public double[] Fs => line.Skip(idx++).Select(double.Parse).ToArray();
    public decimal D => decimal.Parse(line[idx++]);
    public decimal[] Ds => line.Skip(idx++).Select(decimal.Parse).ToArray();
    public BigInteger B => BigInteger.Parse(line[idx++]);
    public BigInteger[] Bs => line.Skip(idx++).Select(BigInteger.Parse).ToArray();

    public void Write(params object[] xs)
    {
        Console.Write(xs.First());
        foreach (var x in xs.Skip(1)) Console.Write(" " + x);
        Console.WriteLine();
    }
}

static class Extentions
{
}

static class Program
{
    static void Main()
    {
        Console.SetOut(new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false });
        Solve(new IO());
        Console.Out.Flush();
    }

    static void Solve(IO io)
    {
        io.R();
        var t = io.I;

        for (var i = 0; i < t; i++)
        {
            var olds = Console.ReadLine();

            var nonDigits = Enumerable.Range(32, 126)
                .Select(x => (char)x).Where(c => !char.IsDigit(c)).ToArray();
            var oldsubs = olds.Split(nonDigits).LastOrDefault(s => s.Length > 0);
            if (oldsubs == null) { io.Write(olds); continue; }

            var idx = olds.LastIndexOf(oldsubs);

            var newsubs = Up(oldsubs);
            var news = olds.Remove(idx, oldsubs.Length).Insert(idx, newsubs);

            io.Write(news);
        }
    }

    static string Up(string str)
    {
        var sb = new StringBuilder(str);

        for (var i = str.Length - 1; i >= 0; i--)
        {
            if (sb[i] < '9')
            {
                var c = sb[i];
                sb.Remove(i, 1).Insert(i, c - '0' + 1);
                break;
            }
            else
            {
                sb.Remove(i, 1).Insert(i, '0');
            }
        }

        var len = str.Length - sb.Length;
        if (len > 0) sb.Insert(0, new string(Enumerable.Repeat('0', str.Length - sb.Length).ToArray()));

        if (str.All(c => c == '9')) sb.Insert(0, '1');

        return sb.ToString();
    }
}
0