結果

問題 No.405 ローマ数字の腕時計
コンテスト
ユーザー kitamoto0407
提出日時 2025-12-06 15:31:10
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 2,089 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,277 ms
コンパイル使用メモリ 79,792 KB
実行使用メモリ 43,840 KB
最終ジャッジ日時 2025-12-06 15:31:16
合計ジャッジ時間 4,768 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 21 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import java.io.*;

class Process {
    private String S;
    private int    T;

    Process(String S, int T) {
        this.S = S;
        this.T = T;
    }
    
    private int toNumber(String s) {
        int result = 0;
        for(int i = 0; i < s.length(); i++) {
            switch(s.charAt(i)) {
                case 'I':
                    result++;
                    break;

                case 'V':
                    result += 5;
                    break;

                case 'X':
                    result += 10;
                    break;
            }
        }

        return result;
    }
    
    private String toRomanNumber(int n) {
        if(n == 0) {
            return "XII";
        }
        
        if(n == 9) {
            return "IX";
        }

        var result = new StringBuffer("");
        while(n > 0) {
            if(n >= 10) {
                result.append("X");
                n -= 10;
            } else if(n >= 5) {
                result.append("V");
                n -= 5;
            } else {
                result.append("I");
                n--;
            }
        }

        return result.toString();
    }

    String getResult() {
        // T を 0 以上にする
        if(T < 0) {
            while(T < 0) {
                T += 12;
            }
        }

        // 短針の位置
        int shortHandPosition = toNumber(S) % 12;

        return toRomanNumber((shortHandPosition + T) % 12);
    }
}

public class Main {
    public static void main(String[] args) throws IOException {
        var bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        var printWriter    = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

        // 入力
        String[] input = bufferedReader.readLine().trim().split("[ ]+");
        String S = input[0];
        int    T = Integer.parseInt(input[1]);

        // 処理および出力
        printWriter.println((new Process(S, T)).getResult());
        
        bufferedReader.close();
        printWriter.close();
    }
}
0