/* Author: ACb0y Date: 2010-11-8 Type: Water~~ ProblemId: Uva 621 Secret Research Result: 8382071 621 Secret Research Accepted C++ 0.012 2010-11-08 08:08:34 */ #include <iostream> using namespace std; //定义一个函数指针类型 typedef bool (*fun)(string); //S是一个递归定义 bool if_s(string str) { int length = str.size(); if (str == "1" || str == "4" || str == "78") { return true; } else { if (str.substr(str.length() - 2, 2) == "35") { return if_s(str.substr(0, str.length() - 2)); } else if (str[0] == '9' && str[length - 1] == '4') { return if_s(str.substr(1, str.length() - 2)); } else if (str.substr(0, 3) == "190") { return if_s(str.substr(3, str.length() - 3)); } else { return false; } } return false; } bool if_p(string str) { if (str == "1" || str == "4" || str == "78") { return true; } else { return false; } } bool if_n(string str) { if (str.substr(str.length() - 2, 2) == "35") { return if_s(str.substr(0, str.length() - 2)); } else { return false; } } bool if_f(string str) { if (str[0] == '9' && str[str.length() - 1] == '4') { return if_s(str.substr(1, str.length() - 2)); } else { return false; } } bool if_n_c(string str) { if (str.substr(0, 3) == "190") { return if_s(str.substr(3, str.length() - 3)); } else { return false; } } int main() { #ifndef ONLINE_JUDGE freopen("621.txt", "r", stdin); #endif //定义了一个函数指针数组 fun funs[4] = { if_p, if_n, if_f, if_n_c }; int n; cin >> n; while (n--) { string str; cin >> str; int ans; for (int i = 0; i < 4; ++i) { if (funs[i](str)) { ans = i; break; } } switch(ans) { case 0: cout << "+" << endl; break; case 1: cout << "-" << endl; break; case 2: cout << "*" << endl; break; case 3: cout << "?" << endl; break; } } }