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 C# (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;

class PaizaSample
{

    

    static void Main()
    {
        string input;
        while ((input = Console.ReadLine()) != null)
        {

            int x = -1;
            for (int i = 0;  i < 10; i++)
            {
                string[] siki = input.Replace('X', i.ToString()[0]).Split('=');
                string wa = siki[1];
                string[] tasu = siki[0].Split('+');
                string a = tasu[0];
                string b = tasu[1];

                int up = 0; //??°????????????
                bool tmpFlag = true;
                for (int j = 0; j < wa.Length; j++)
                {
                    int at = a.Length <= j ? 0 : int.Parse(a[a.Length - 1 - j].ToString());
                    int bt = b.Length <= j ? 0 : int.Parse(b[b.Length - 1 - j].ToString());
                    int wat = int.Parse(wa[wa.Length - 1 - j].ToString());
                    if ((at + bt + up) % 10 != wat)
                    {
                        tmpFlag = false;
                        break;
                    }

                    up = at + bt + up >= 10 ? 1 : 0;
                }

                if (tmpFlag)
                {
                    x = i;
                    break;
                }

            }

            if (x != -1)
            {
                Console.WriteLine(x);
            }
            else
            {
                Console.WriteLine("NA");
            }

        }

 //       Console.ReadKey();

    }
}