AOJ 0074
・問題リンク Videotape
・コメント
ポイントは三倍速録画の場合は元々の録画時間を6時間にセットすればいいということ。それから、減算により一つ上の位を-1して足した場合の引かれた値がマイナスになってしまったときの処理を忘れずに行うという事だったと思います。主は、実行して間違えていたら辻褄合わせでソースを書きたしていったのでとっても汚いことになっていますがもっと綺麗にする余地はいくらでもありますね。。(笑)
・ソース
import java.util.Scanner; public class P0074 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); final int h = 2, m = 0, s = 0; while (sc.hasNext()) { // 残り時間入力 int h1 = sc.nextInt(); int m1 = sc.nextInt(); int s1 = sc.nextInt(); // 終了条件 if (h1 == -1 && m1 == -1 && s1 == -1) { break; } // ノーマル残り録画時間 int ah = h - h1; int am = 0; if (m - m1 < 0) { ah--; am = m - m1 + 60; } int as = 0; ; if (s - s1 < 0) { am--; as = s - s1 + 60; } // 分が引かれたことによりマイナスの値になった時の処理 if (am < 0) { ah--; am += 60; } // 3倍速残り録画時間 int bh = 3 * ah; int bm = 3 * am; int bs = 3 * as; if (as >= 40) { bs -= 120; bm += 2; } else if (as >= 20) { bs -= 60; bm += 1; } if (am >= 40) { bm -= 120; bh += 2; } else if (am >= 20) { bm -= 60; bh += 1; } // 分が引かれたことによりマイナスの値になった時の処理 if (bm < 0) { bh--; bm += 60; } // ノーマル録画可能時間 System.out.printf("%02d:%02d:%02d\n", ah, am, as); // 三倍速時の残り録画可能時間 System.out.printf("%02d:%02d:%02d\n", bh, bm, bs); } } }