该怎么做网站编辑主要做什么,吉 360 网站建设,长沙建网站培训机构,哈尔滨市建设工程交易中心AcWing 791. 高精度加法
题目描述
给定两个正整数#xff08;不含前导 0#xff09;#xff0c;计算它们的和。
输入格式
共两行#xff0c;每行包含一个整数。
输出格式
共一行#xff0c;包含所求的和。
数据范围
1≤整数长度≤100000
输入样例#xff1a;
1…AcWing 791. 高精度加法
题目描述
给定两个正整数不含前导 0计算它们的和。
输入格式
共两行每行包含一个整数。
输出格式
共一行包含所求的和。
数据范围
1≤整数长度≤100000
输入样例
12
23输出样例
35C
#include iostream
#include stringusing namespace std;void reverse(string s) {size_t n s.length();for (int i 0; i n / 2; i) {swap(s[i], s[n - i - 1]);}
}string add(string a, string b) {reverse(a);reverse(b);size_t n max(a.size(), b.size()), carry 0;string result;for (size_t i 0; i n; i) {if (i a.size()) carry a[i] - 0;if (i b.size()) carry b[i] - 0;result.push_back(carry % 10 0);carry / 10;}if (carry) result.push_back(carry 0);reverse(result);return result;
}int main() {string a, b;cin a b;cout add(a, b) endl;return 0;
}#include iostream
#include string
#include algorithm // std::reverseusing namespace std;// 实现大整数相加的函数
string add(string a, string b) {// 反转字符串使得从最低位开始相加reverse(a.begin(), a.end());reverse(b.begin(), b.end());size_t n max(a.size(), b.size()), carry 0;string result;for (size_t i 0; i n; i) {if (i a.size()) carry a[i] - 0;if (i b.size()) carry b[i] - 0;result.push_back(static_castchar(carry % 10 0));carry / 10;}// 处理最高位的进位if (carry) result.push_back(static_castchar(carry 0));// 将结果反转回正确的顺序reverse(result.begin(), result.end());return result;
}int main() {string a, b;cin a b;cout add(a, b) endl;return 0;
}#include iostream
#include vectorusing namespace std;vectorint add(vectorint A, vectorint B) {if (A.size() B.size()) return add(B, A);vectorint C;int t 0;for (size_t i 0; i A.size(); i) {t A[i];if (i B.size()) t B[i];C.push_back(t % 10);t / 10;}if (t) C.push_back(t);return C;
}int main() {string a, b;vectorint A, B;cin a b;for (size_t i a.size(); i 0; i--) A.push_back(a[i - 1] - 0);for (size_t i b.size(); i 0; i--) B.push_back(b[i - 1] - 0);auto C add(A, B);for (size_t i C.size(); i 0; i--) cout C[i - 1];cout endl;return 0;
}#include iostream
#include vectorusing namespace std;vectorint add(vectorint A, vectorint B)
{if (A.size() B.size()) return add(B, A);vectorint C;int t 0;for (int i 0; i A.size(); i ){t A[i];if (i B.size()) t B[i];C.push_back(t % 10);t / 10;}if (t) C.push_back(t);return C;
}int main()
{string a, b;vectorint A, B;cin a b;for (int i a.size() - 1; i 0; i -- ) A.push_back(a[i] - 0);for (int i b.size() - 1; i 0; i -- ) B.push_back(b[i] - 0);auto C add(A, B);for (int i C.size() - 1; i 0; i -- ) cout C[i];cout endl;return 0;
}Go
package mainimport (fmtstrings
)func reverse(s string) string {r : []rune(s)l : len(r)for i : 0; i l/2; i {r[i], r[l-i-1] r[l-i-1], r[i]}return string(r)
}func max(i int, j int) int {if i j {return i}return j
}func add(a, b string) string {a reverse(a)b reverse(b)n : max(len(a), len(b))var carry uint8 0var res strings.Builderfor i : 0; i n; i {if i len(a) {carry a[i] - 0}if i len(b) {carry b[i] - 0}res.WriteByte(carry%10 0)carry / 10}if carry 0 {res.WriteByte(carry 0)}return reverse(res.String())
}func main() {var a, b stringfmt.Scanln(a)fmt.Scanln(b)fmt.Println(add(a, b))
}模板
// C A B, A 0, B 0
vectorint add(vectorint A, vectorint B)
{if (A.size() B.size()) return add(B, A);vectorint C;int t 0;for (int i 0; i A.size(); i ){t A[i];if (i B.size()) t B[i];C.push_back(t % 10);t / 10;}if (t) C.push_back(t);return C;
}