注意下Dev编译器 getline(cin,str) 识别问题 找了一下午错…
#include <cstring>
#include <string.h>
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#define ll long long
#define PII pair<int, int>
#define MSI map<string,int>
#define TLE ios::sync_with_stdio(0),cin.tie(0)
#define mod 1000000007
const int INF = 0x3f3f3f3f;
using namespace std;
int makestr(string str) {
//cout << str << endl;
int ans = 0, flag = 0;
if (str.length() == 1) {
ans = str[0] - 48;
// cout << "1ans " << ans << endl;
return ans;
}
for (int i = 1; i < str.length(); i += 2) {
if (str[i] == '+') {
ans = makestr(str.substr(0, i)) + makestr(str.substr(i + 1)); flag = 1; break;
}
else if (str[i] == '-') {
for (int j = i + 2; j < str.length(); j += 2) {
if (str[j] == '+') str[j] = '-';
else if (str[j] == '-') str[j] = '+';
}
ans = makestr(str.substr(0, i)) - makestr(str.substr(i + 1)); flag = 1; break;
}
}
if (flag) {
// cout << "2ans " << ans << endl;
return ans;
}
else {
ans = str[0] - 48;
for (int i = 1; i < str.length(); i += 2) {
if (str[i] == 'x') {
ans *= (int)(str[i + 1] - 48);
}
else if (str[i] == '/') {
ans /= (int)(str[i + 1] - 48);
}
}
// cout << "3ans " << ans << endl;
return ans;
}
}
int main() {
TLE;
string str;
int T;
cin >> T;
while (T--) {
cin>>str;
int ans = 0, flag = 0;
for (int i = 1; i < str.length(); i += 2) {
if (str[i] == '+') {
ans = makestr(str.substr(0, i)) + makestr(str.substr(i + 1));
flag = 1;
// cout << "4ans " << ans << endl;
break;
}
else if(str[i] == '-') {
for (int j = i + 2; j < str.length(); j += 2) {
if (str[j] == '+') str[j] = '-';
else if (str[j] == '-') str[j] = '+';
}
ans = makestr(str.substr(0, i)) - makestr(str.substr(i + 1));
flag = 1;
// cout << "5ans " << ans << endl;
break;
}
}
if (!flag) {
ans = str[0] - 48;
for (int i = 1; i < str.length(); i += 2) {
if (str[i] == 'x') {
ans *= (int)(str[i + 1] - 48);
}
else if (str[i] == '/') {
ans /= (int)(str[i + 1] - 48);
}
}
}
// cout << "6ans " << ans << endl;
if (ans == 24) cout << "Yes" << endl;
else cout << "No" << endl;
}
}