Problem:


  MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], skipTags: ["script","noscript","style","textarea","code"], processEscapes: true }});

問題文

2つの整数 $A$，$B$ がある。
十進数での筆算によって $A - B$ を求める処理を以下に示す。

　1. $A$，$B$ を十進数で表現する。添字は下位から順に $0,1,2,...,n-1$ とし、 $A = A_{n-1} A_{n-2} ... A_{0}$，$B = B_{n-1} B_{n-2} ... B_{0}$ とする。 $n$ は十進数で表現した時の$A$の桁数とする。 $B$ の桁数が $n$ より小さいとき、上位桁に $0$ を補う。

　2. $borrow_{0} = 0$ とする。

　3. 以下の処理を $i = 0$ から $n-1$ まで繰り返す。

　　3.1. $A_{i} - borrow_{i} \geq B_{i}$ ならば、 $C_{i} = A_{i} - borrow_{i} - B_{i}$ ， $borrow_{i+1} = 0$とする。

　　3.2. $A_{i} - borrow_{i} \lt B_{i}$ ならば、 $C_{i} = A_{i} - borrow_{i} + 10 - B_{i}$ ， $borrow_{i+1} = 1$とする。

$A - B$ の計算結果は $C_{n-1} C_{n-2} ... C_{0}$ となる。ただし、最上位に連続する $0$ は取り除く。

繰り下がりを忘れると3.2の処理での $borrow_{i+1} = 1$ が $borrow_{i+1} = 0$ となる。
最大 $K$ 回繰り下がりを忘れたときの計算結果の最大値を求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$A$ $B$ $K$

制約

$1 \leq B \lt A \leq 10^9$

$1 \leq K \leq 9$

出力

計算結果の最大値を1行に出力せよ。

Sample Input 1

99 98 1

Output for the Sample Input 1

1

Sample Input 2

100 2 3

Output for the Sample Input 2

198

Sample Input 3

538 84 1

Output for the Sample Input 3

554

Sample Input 4

2012 1987 1

Output for the Sample Input 4

1025



Sample input:
99 98 1


Sample output:
1

Submission status: Accepted

Solution code:
def solve(C,K,i,borrow):
	if i == -1:
		return int("".join(map(str,C)))
	if A[i] - borrow >= B[i]:
		C[i] = A[i] - borrow - B[i]
		return solve(C,K,i-1,0)
	else:
		C[i] = A[i] - borrow + 10 - B[i]
		if K > 0:
			return max(solve(C,K-1,i-1,0),solve(C,K,i-1,1))
		else:
			return solve(C,K,i-1,1)

A,B,K = raw_input().split()
A,B,K = [int(i) for i in A],[int(i) for i in B],int(K)
n = len(A)
B = [0] * max(0, n - len(B)) + B
C = [0] * n
print solve(C,K,n-1,0)