#include #include #include #include #include #define UINT uint64_t UINT numOfDigits(UINT num) { UINT res = 0; if (num == 0) return 1; do { if (num == 0) break; num /= 10; res++; } while (1); return res; } UINT multiplyDigits(UINT num) { UINT res = 1; if (num == 0) return 0; do { if (num == 0) { break; } res *= num % 10; num /= 10; } while (1); return res; } bool sameDigits(UINT num1, UINT num2) { if (numOfDigits(num1) == numOfDigits(num2)) { char buff1[256], buff2[256]; snprintf(buff1, sizeof(buff1), "%ld", num1); snprintf(buff2, sizeof(buff2), "%ld", num2); UINT len = (UINT)strlen(buff1); for (UINT i = 0; i < len; i++) { bool found = false; for (UINT j = 0; j < len; j++) { if (buff1[i] == buff2[j]) { found = true; } } if (!found) return false; } } return true; } int main() { UINT t = 0, n = 0, a = 0, b = 0; std::cin >> t; for (UINT i = 0; i < t; i++) { std::cin >> n >> a >> b; UINT nDigits = numOfDigits(n); UINT ab = a * (UINT)pow(10, numOfDigits(b)); ab += b; if (n == a * b && nDigits / 2 == numOfDigits(a) && nDigits / 2 == numOfDigits(b) && !(a % 10 == 0 && b % 10 == 0) && /*sameDigits(n, ab)) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; }*/ multiplyDigits(n) == (multiplyDigits(a) * multiplyDigits(b))) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; } /* if (n != a * b) { coutNo(); continue; } if (nDigits / 2 != numOfDigits(a) || nDigits / 2 != numOfDigits(b)) { coutNo(); continue; } if (a % 10 != 0 || b % 10 != 0) { coutNo(); continue; } if (multiplyDigits(n) != multiplyDigits(a) * multiplyDigits(b)) { coutNo(); continue; } */ } return 0; }