#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string equation; cin >> equation; // 找到等号位置并分割字符串 size_t equalPos = equation.find('='); if (equalPos == string::npos) { cout << "Impossible!" << endl; return 0; } string leftStr = equation.substr(0, equalPos); string rightStr = equation.substr(equalPos + 1); // 将右边字符串转换为整数 long long rightNum; try { rightNum = stoll(rightStr); } catch (...) { cout << "Impossible!" << endl; return 0; } // 尝试在每个可能的位置插入加号 for (size_t i = 1; i < leftStr.length(); i++) { string part1 = leftStr.substr(0, i); string part2 = leftStr.substr(i); // 避免前导零的情况 if (part1.length() > 1 && part1[0] == '0') continue; if (part2.length() > 1 && part2[0] == '0') continue; try { long long num1 = stoll(part1); long long num2 = stoll(part2); if (num1 + num2 == rightNum) { cout << part1 << '+' << part2 << '=' << rightStr << endl; return 0; } } catch (...) { // 处理转换异常,继续尝试其他位置 continue; } } // 如果没有找到解决方案 cout << "Impossible!" << endl; return 0; } /************************************************************** Problem: 1114 User: zhouhongyi Language: C++ Result: Accepted Time:8 ms Memory:2080 kb ****************************************************************/