C++方法# 漏抄的数字 ## 题目描述 小明在计算两个数字的加法时,不小心将第一个数字漏抄了一段,例如原数为112311,如果从第二个字符的位置开始漏抄两个数字23,那么结果会变为1111。现在告诉你一个漏抄后错误的第一个加数,第二个加数,以及漏抄开始的位置和一个漏抄的内容。请你求出两个原始数字相加后的结果。例如漏抄的第一个加数是1100和第二个加数是11,漏抄的位置是2,漏抄的内容是11,那么得到的正确结果是111100+11=111111, 答案为111111 ## 输入格式 第一行一个数字串,表示漏抄的第一个加数 第二行一个数字串,表示第二个加数 第三行一个整数,表示一个位置 第四行一个数字串,表示漏抄的内容 ## 输出格式 一行,一个数字串,表示未漏抄的数字相加后的正确结果 ## 样例 #1 ### 样例输入 #1 ``` 1100 11 2 11 ``` ### 样例输出 #1 ``` 111111 ``` ## 提示 对于30%的数据,相加后的答案长度小于等于17位 对于100%的数据,相加后的答案长度小于等于1000位
时间: 2024-02-15 13:03:29 浏览: 135
下面是 C++ 的实现代码,可以参考一下:
```cpp
#include <iostream>
#include <string>
using namespace std;
string addNumber(string num1, string num2) {
// 将字符串转换为整数,相加后再转换为字符串输出
return to_string(stoll(num1) + stoll(num2));
}
int main() {
// 读入漏抄的第一个加数、第二个加数、漏抄位置和漏抄的内容
string num1, num2, lost_num;
int pos;
cin >> num1 >> num2 >> pos >> lost_num;
// 将漏抄位置之前和之后的数字分别保存到两个字符串中
string pre_num1 = num1.substr(0, pos-1);
string post_num1 = num1.substr(pos-1);
// 将漏抄的数字插入到漏抄位置中间
string new_num1 = pre_num1 + lost_num + post_num1;
// 将两个字符串相加
string res = addNumber(new_num1, num2);
// 输出结果
cout << res << endl;
return 0;
}
```
时间复杂度为 $O(n)$,其中 $n$ 是相加后的数字的位数。
阅读全文