文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

Wrong Subtraction [ Codeforces Round #479 (Div. 3) A ]

codeforces.com


問題

整数 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);
		
}