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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	private	static	BufferedReader	br = null;

	static {
		br = new BufferedReader(new InputStreamReader(System.in));
	}
 
    /**
     * @param args
     */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long[]	formula = null;

		while ((formula = parseFormula()) != null) {
			calc(formula);
		}
	}

	private static void calc(long[] formula) {
		String	out = "NA";
		long	x   = formula[3] - formula[1];
		long	n   = formula[0] - formula[2];

		if (x != 0L) {
			if (n % x == 0L) {
				long	res = n / x;
				if (!(res == 0L && formula[4] != 0L) && (0L <= res && res <= 9L)) {
					out = String.valueOf(res);
				}
			}
		}

		System.out.println(out);
	}

	private static long[] parseFormula() {
		long[]	formula = null;
		String	str     = null;

		if ((str = parseStdin()) != null) {
			String[]	lines = str.split("[+=]");

			formula = new long[5];

			for (int l = 0; l < lines.length; l++) {
				int		diff = (l == lines.length - 1) ? 2 : 0;
				long[]	line = parseLine(lines[l]);

				formula[0+diff] += line[0];
				formula[1+diff] += line[1];
				formula[4]      |= line[2];
			}
		}

		return formula;
	}

	private static long[] parseLine(String stdin) {
		long[]	line = new long[3];

		if (stdin != null) {
			if (!stdin.isEmpty()) {
				int	size = stdin.length();
				for (int l = size-1; l >= 0; l--) {
					char	c = stdin.charAt(l);
					long	b = (long)Math.pow(10, size - 1 - l);
					if (c == 'X') {
						line[1] += b;
						line[2]  = (l == 0 & size > 1) ? 1 : 0;
					} else {
						line[0] += (int)(c - '0') * b;
					}
				}
			}
		}

		return line;
	}

	private static String parseStdin() {
        String  stdin = null;
        
        try {
        	String  tmp = br.readLine();
        	if (tmp != null) {
            	if (!tmp.isEmpty()) {
            		stdin = tmp;
            	}
        	}
        }
        catch (IOException e) {}
 
        return stdin;
	}
}