#include #include using namespace std; // brute-force searching // enumerate every possibility and verify them int solve(const string&, const string&, const string&); inline int enumerate_a(const string& a, const string& b, const string& dest, size_t idx) { string ca = a; for (size_t i = 0; i <= 9; ++i) { ca[idx] = '0' + i; } return solve(ca, b, dest); } inline int enumerate_b(const string& a, const string& b, const string& dest, size_t idx) { string cb = b; for (size_t i = 0; i <= 9; ++i) { cb[idx] = '0' + i; } return solve(a, cb, dest); } int solve(const string& a, const string& b, const string& dest) { bool ahas = false, bhas = false; int result = 0; for (int i = 0; i < 3; ++i) { if (a[i] == 'X') result += enumerate_a(a, b, dest, i); if (b[i] == 'X') result += enumerate_b(a, b, dest, i); } if (ahas || bhas) return 0; return ::atoi(a.c_str()) + ::atoi(b.c_str()) == ::atoi(dest.c_str()) ? 1 : 0; } int main() { int n; cin >> n; while (n-- > 0) { string a, b, dest; cin >> a >> b >> dest; // pad if (a.size() == 1) a = "00" + a; if (a.size() == 2) a = "0" + a; if (b.size() == 1) b = "00" + b; if (b.size() == 2) b = "0" + b; cout << solve(a, b, dest) << endl; } }