1 条题解

  • 0
    @ 2024-9-24 20:35:37
    #include <iostream>
    #include <string>
    
    int main() {
        std::string input;
        std::cin >> input; // 读取输入,例如 "1234=127"
    
        // 找到等号的位置
        size_t equal_pos = input.find('=');
        if (equal_pos == std::string::npos) {
            std::cout << "Impossible!" << std::endl;
            return 0;
        }
    
        // 分割输入为左边和右边
        std::string left = input.substr(0, equal_pos);
        std::string right = input.substr(equal_pos + 1);
    
        long long right_num = std::stoll(right); // 将右边的数字转为 long long 类型
    
        // 遍历左边的数字,尝试插入加号
        bool found = false;
        for (size_t i = 1; i < left.size(); ++i) {
            std::string left_part = left.substr(0, i);  // 左侧部分
            std::string right_part = left.substr(i);     // 右侧部分
            
            // 转换为数字
            long long left_num = std::stoll(left_part) + std::stoll(right_part);
    
            // 判断是否相等
            if (left_num == right_num) {
                // 输出结果
                std::cout << left_part << "+" << right_part << "=" << right << std::endl;
                found = true;
                break;
            }
        }
    
        // 如果没有找到满足条件的组合
        if (!found) {
            std::cout << "Impossible!" << std::endl;
        }
    
        return 0;
    }
    
    
    • 1

    信息

    ID
    302
    时间
    1000ms
    内存
    16MiB
    难度
    4
    标签
    递交数
    5
    已通过
    4
    上传者