- C++
发明人:陈锦润 发明项目:高精度(建议置顶 这次没bug)
- 2024-9-11 19:08:34 @
#include<iostream>
using namespace std;
template<typename _RandomAccessIterator>
inline void __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag){
if (__first == __last){
return;
}
--__last;
while (__first < __last){
iter_swap(__first, __last);
++__first;
--__last;
}
return;
}
template<typename _BidirectionalIterator>
inline void reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) {
__glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BidirectionalIterator>);
__glibcxx_requires_valid_range(__first, __last);
__reverse(__first, __last, __iterator_category(__first));
return;
}
string add(string x,string y){
string sum = "";
bool plus_one = false,xone = false,yone = false;
register unsigned long long xlen = x.size() - 1,ylen = y.size() - 1;
for(unsigned long long i = 0; i < max(x.size(),y.size()); ++i) {
if(xone == true) {
if(plus_one == true) {
sum[i] += y[ylen - i] - '0';
plus_one = false;
if(sum[i] > '9'){
sum[i] -= 10;
sum += '1';
plus_one = true;
}
}
else {
sum += '0' + (y[ylen - i] - '0');
}
}
else if(yone == true) {
if(plus_one == true) {
sum[i] += x[xlen - i] - '0';
plus_one = false;
if(sum[i] > '9'){
sum[i] -= 10;
sum += '1';
plus_one = true;
}
}
else {
sum += '0' + (x[xlen - i] - '0');
}
}
else {
if(xlen - i == 0){
xone = true;
}
if(ylen - i == 0){
yone = true;
}
if(plus_one == true) {
sum[i] += ((x[xlen - i] - '0') + (y[ylen - i] - '0')) % 10;
plus_one = false;
if(sum[i] > '9') {
sum[i] -= 10;
plus_one = true;
}
}
else {
sum += '0' + (((x[xlen - i] - '0') + (y[ylen - i] - '0')) % 10);
}
if('0' + (x[xlen - i] - '0') + (y[ylen - i] - '0') > '9' || plus_one == true) {
sum += '1';
plus_one = true;
}
}
}
reverse(sum.begin(),sum.end());
return sum;
}
int main() {
string n,m;
cin >> n >> m;
cout << add(n,m);
return 0;
}
卧槽这啥呀跟狗屎一样,我以前写的代码都是啥东西
4 comments
-
2024-9-12 10:50:06@
冷知识: 假设字符串a长度为4 那么a.size() - 5 = pow(2,64)
-
2024-9-12 10:37:25@
操 我买了一本深入简出 结果上面有教高精度 还更简洁
-
2024-9-11 20:06:28@
- 1