結果

問題 No.539 インクリメント
ユーザー くれちーくれちー
提出日時 2017-07-02 10:58:27
言語 C#(csc)
(csc 3.9.0)
結果
TLE  
実行時間 -
コード長 5,006 bytes
コンパイル時間 1,406 ms
コンパイル使用メモリ 116,096 KB
実行使用メモリ 53,868 KB
最終ジャッジ日時 2024-04-15 11:48:24
合計ジャッジ時間 5,898 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 47 ms
26,084 KB
testcase_01 AC 381 ms
53,868 KB
testcase_02 AC 362 ms
43,604 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;

#pragma warning disable IDE0007
#pragma warning disable IDE0009
#pragma warning disable IDE1006
#region ref. https://yukicoder.me/submissions/182781 (Apache License 2.0)
using System.Globalization;

public class Printer : StreamWriter
{
    static Printer()
    {
        Out = new Printer(Console.OpenStandardOutput()) { AutoFlush = false };
    }

    public static Printer Out { get; set; }

    public override IFormatProvider FormatProvider
    {
        get { return CultureInfo.InvariantCulture; }
    }

    public Printer(Stream stream) : base(stream, new UTF8Encoding(false, true))
    {
    }

    public Printer(Stream stream, Encoding encoding) : base(stream, encoding)
    {
    }

    public void Write<T>(string format, T[] source)
    {
        base.Write(format, source.OfType<object>().ToArray());
    }

    public void WriteLine<T>(string format, T[] source)
    {
        base.WriteLine(format, source.OfType<object>().ToArray());
    }
}

public class StreamScanner
{
    public StreamScanner(Stream stream)
    {
        str = stream;
    }

    public readonly Stream str;
    private readonly byte[] buf = new byte[1024];
    private int len, ptr;
    public bool isEof;

    public bool IsEndOfStream
    {
        get { return isEof; }
    }

    private byte read()
    {
        if (isEof) return 0;
        if (ptr < len) return buf[ptr++];
        ptr = 0;
        if ((len = str.Read(buf, 0, 1024)) > 0) return buf[ptr++];
        isEof = true;
        return 0;
    }

    public char Char()
    {
        byte b;
        do b = read(); while ((b < 33 || 126 < b) && !isEof);
        return (char)b;
    }

    public string Scan()
    {
        var sb = new StringBuilder();
        for (var b = Char(); b >= 33 && b <= 126; b = (char)read())
            sb.Append(b);
        return sb.ToString();
    }

    public string ScanLine()
    {
        var sb = new StringBuilder();
        for (var b = Char(); b != '\n'; b = (char)read())
            if (b == 0) break;
            else if (b != '\r') sb.Append(b);
        return sb.ToString();
    }

    public long Long()
    {
        if (isEof) return long.MinValue;
        long ret = 0;
        byte b;
        var ng = false;
        do b = read(); while (b != 0 && b != '-' && (b < '0' || '9' < b));
        if (b == 0) return long.MinValue;
        if (b == '-')
        {
            ng = true;
            b = read();
        }
        for (; ; b = read())
        {
            if (b < '0' || '9' < b)
                return ng ? -ret : ret;
            ret = ret * 10 + b - '0';
        }
    }

    public int Integer()
    {
        return (isEof) ? int.MinValue : (int)Long();
    }

    public double Double()
    {
        var s = Scan();
        return s != "" ? double.Parse(s, CultureInfo.InvariantCulture) : double.NaN;
    }

    static T[] enumerate<T>(int n, Func<T> f)
    {
        var a = new T[n];
        for (int i = 0; i < n; ++i) a[i] = f();
        return a;
    }

    public char[] Char(int n)
    {
        return enumerate(n, Char);
    }

    public string[] Scan(int n)
    {
        return enumerate(n, Scan);
    }

    public double[] Double(int n)
    {
        return enumerate(n, Double);
    }

    public int[] Integer(int n)
    {
        return enumerate(n, Integer);
    }

    public long[] Long(int n)
    {
        return enumerate(n, Long);
    }
}
#endregion
#pragma warning restore IDE0007
#pragma warning restore IDE0009
#pragma warning restore IDE1006

static class Extentions
{
}

static class Program
{
    static void Main()
    {
        Solve(new StreamScanner(Console.OpenStandardInput()));
        Printer.Out.Flush();
    }

    static void Solve(StreamScanner sc)
    {
        var t = sc.Integer();

        for (var i = 0; i < t; i++)
        {
            var olds = sc.ScanLine();

            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) { Printer.Out.WriteLine(olds); continue; }

            var idx = olds.LastIndexOf(oldsubs);

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

            Printer.Out.WriteLine(news);
        }
    }

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

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

        var len = str.Length - sb.Length;
        if (len > 0) sb.Insert(0, "0", len);
        if (str.All(c => c == '9')) sb.Insert(0, "1");

        return sb.ToString();
    }
}
0