#include<iostream> #include<vector> #include<string> using namespace std; struct MyStruct { int a; int b; }; struct Ret { int x_a,x_b; int y_a,y_b; int z_a,z_b; }; int main() { int t; int flag = 1; vector<MyStruct> X_num; vector<MyStruct> Y_num; vector<MyStruct> Z_num; vector<Ret> ret; while (cin >> t && t != 0) { string str; getchar(); while (t--) { getline(cin, str); for (int i = 0;i < str.length();i += 6) { if (str[i + 2] == 'X') { X_num.push_back({ str[i] - '0',str[i + 4] - '0' }); if (str[i + 4] - '0' >= 1) { X_num[X_num.size() - 1].a = X_num[X_num.size() - 1].a*X_num[X_num.size() - 1].b; X_num[X_num.size() - 1].b -= 1; } } else if (str[i + 2] == 'Y') { Y_num.push_back({ str[i] - '0',str[i + 4] - '0' }); if (str[i + 4] - '0' >= 1) { Y_num[Y_num.size() - 1].a = Y_num[Y_num.size() - 1].a*Y_num[Y_num.size() - 1].b; Y_num[Y_num.size() - 1].b -= 1; } } else { Z_num.push_back({ str[i] - '0',str[i + 4] - '0' }); if (str[i + 4] - '0' >= 1) { Z_num[Z_num.size() - 1].a = Z_num[Z_num.size() - 1].a*Z_num[Z_num.size() - 1].b; Z_num[Z_num.size() - 1].b -= 1; } } } ret.push_back({ 0,0,0,0,0,0 }); if (X_num.size() != 0) ret[ret.size() - 1].x_b = X_num[0].b; if (Y_num.size() != 0) ret[ret.size() - 1].y_b = Y_num[0].b; if (Z_num.size() != 0) ret[ret.size() - 1].z_b = Z_num[0].b; for (int i = 0;i < X_num.size();i++) { ret[ret.size() - 1].x_a += X_num[i].a; } for (int i = 0;i < Y_num.size();i++) { ret[ret.size() - 1].y_a += Y_num[i].a; } for (int i = 0;i < Z_num.size();i++) { ret[ret.size() - 1].z_a += Z_num[i].a; } X_num.clear(); Y_num.clear(); Z_num.clear(); } cout << "Case #" << flag << ":" << endl; for (int i = 0;i < ret.size();i++) { if (ret[i].x_a != 0) cout << ret[i].x_a; if(ret[i].x_b!=0) cout<< " * " << "X" << " ^ " << ret[i].x_b; if (ret[i].x_a != 0 && (ret[i].y_a != 0 || ret[i].z_a != 0)) cout << " + "; if (ret[i].y_a != 0) cout << ret[i].y_a; if (ret[i].y_b != 0) cout << " * " << "Y" << " ^ " << ret[i].y_b; if (ret[i].y_a != 0 && ret[i].z_a != 0) cout << " + "; if (ret[i].z_a != 0) cout << ret[i].z_a; if (ret[i].z_b != 0) cout << " * " << "Z" << " ^ " << ret[i].z_b; cout << endl; } flag++; ret.clear(); } return 0; } |
Double click to view unformatted code.