Wrong Subtraction [ Codeforces Round #479 (Div. 3) A ]
問題
整数 n に対して、以下の操作を k 回おこなう。
・n の最後の桁が 0 なら、n を 10 で割る
・そうでないなら、n から 1 を引く
k 回の操作が終わったあとの n の値を出力せよ。
考察
「最後の桁が 0 かどうか」を判定するには、さまざまな方法があります。
一番わかりやすいのは、n を文字列に変換して n.charAt(n.length()-1) とすることです。
しかしよく考えてみると、「最後の桁が 0 」であるような n は、必ず10の倍数になっていることがわかります。
よって、その判定には「n が10の倍数であるかどうか」を利用すればよいです。
コード
void solve (FastScanner in, PrintWriter out) { int n = in.nextInt(), k = in.nextInt(); for (int i=0; i<k; i++) { n = n%10==0 ? n/10 : n-1; } out.println(n); }