CCF 201903-2 二十四点

tech2022-08-12  128

注意下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; } }
最新回复(0)