Problem:
覆面算

数式の一部を隠してしまって、隠した数字を探す問題を覆面算といいます。今回は、数式の中のある数字のいくつかを X で隠してしまった式を扱います。以下の数式を入力して、結果を出力するプログラムを作成してください。

数式

「数字列 + 数字列 = 数字列」の形で、1 行の単純な足し算式です。

「数字列」は、数字 0 から 9 と文字 X の並びです。

2 桁以上の「数字列」の左端の数字は 0 ではないものとします。

X は、数式全体の中で必ず 1 つ以上含まれます。

結果

覆面算の答えです。数式が成り立つ様な X の値で 0 ~ 9 のどれか 1 つです。2 つ以上の答えはないものとします。

答えがない場合、結果は“NA”としてください。

Input

複数のデータセットが与えられます。各データセットとして、X を 1 つ以上含む足し算式(空白を含まない 126 文字以内の文字列) が１行に与えられます。データセットの数は 150 を超えません。

Output

各データセットについて、覆面算の結果を１行に出力してください。数字 0 ~ 9 または NA を出力してください。

Sample Input

123+4X6=X79
12X+4X6=X79
XX22+89=X2XX

Output for the Sample Input

5
NA
1

Solution in JAVA (judge verdict: Accepted)

import java.util.*;

class Main{

    char[] in;
    int p;

    void solve(){
	Scanner sc = new Scanner(System.in);

	while(sc.hasNext()){
	    String s = sc.next();

	    in = s.toCharArray();

	    int ans = -1;
	    for(int num = 0; num <= 9; num++){
		for(int i=0; i<in.length; i++){
		    if(s.charAt(i)=='X'){
			in[i] = (char)(num + '0');
		    }
		}
		p = 0;
		String a = digit();
		p++;
		String b = digit();
		p++;
		String c = digit();
		if(a.length()!=1 && a.charAt(0)=='0') continue;
		if(b.length()!=1 && b.charAt(0)=='0') continue;
		if(a.length()!=1 && c.charAt(0)=='0') continue;

		String left = sum(a, b);
		if(left.equals(c)){
		    ans = num;
		    break;
		}
	    }

	    if(ans==-1) System.out.println("NA");
	    else System.out.println(ans);
	}
    }

    String sum(String a, String b){
	int n1 = a.length();
	int n2 = b.length();
	if(n1<n2){
	    String tmp = a;
	    a = b;
	    b = tmp;
	}

	String[] line = new String[Math.max(a.length(), b.length())+1];
	for(int i=0; i<a.length(); i++) line[i] = String.valueOf(a.charAt(a.length()-i-1));
	for(int i=0; i<b.length(); i++){
	    int num = Integer.valueOf(line[i]);
	    int num2 = b.charAt(b.length()-i-1) - '0';
	    num += num2;
	    if(num<10) line[i] = String.valueOf(num);
	    else{
		line[i] = String.valueOf(num % 10);
		int num3 = 0;
		if(line[i+1]!=null) num3 = Integer.parseInt(line[i+1]);
		line[i+1] = String.valueOf(num3 + num/10);
	    }
	}

	String res = "";
	for(int i=line.length-1; i>=0; i--){
	    if(line[i]==null) continue;
	    res += line[i];
	}
	return res;
    }

    String digit(){
	String res = "";
	while(p<in.length && Character.isDigit(in[p])) res += in[p++];
	return res;
    }

    public static void main(String[] args){
	new Main().solve();
    }
}