一、加
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std
;
vector
<int> add(vector
<int> &A
, vector
<int> &B
) {
if (A
.size() < B
.size()) return add(B
, A
);
vector
<int> 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(1);
return C
;
}
int main() {
string a
, b
;
vector
<int> 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');
vector
<int> C
= add(A
, B
);
for (int i
= C
.size() - 1; i
>= 0; i
--) printf("%d", C
[i
]);
return 0;
}
二、减
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std
;
bool cmp(vector
<int> &A
, vector
<int> &B
) {
if (A
.size() != B
.size()) return A
.size() > B
.size();
for (int i
= A
.size() - 1; i
>= 0; i
--) {
if (A
[i
] != B
[i
])
return A
[i
] > B
[i
];
}
return true;
}
vector
<int> sub(vector
<int> &A
, vector
<int> &B
) {
vector
<int> C
;
for (int i
= 0, t
= 0; i
< A
.size(); i
++) {
t
= A
[i
] - t
;
if (i
< B
.size()) t
-= B
[i
];
C
.push_back((t
+ 10) % 10);
if (t
< 0) t
= 1;
else t
= 0;
}
while (C
.size() != 1 && C
.back() == 0) C
.pop_back();
return C
;
}
int main() {
string a
, b
;
vector
<int> A
, B
, C
;
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');
if (cmp(A
, B
)) {
C
= sub(A
, B
);
} else {
C
= sub(B
, A
);
printf("-");
}
for (int i
= C
.size() - 1; i
>= 0; i
--) printf("%d", C
[i
]);
return 0;
}
三、乘
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std
;
typedef long long ll
;
vector
<int> mul(vector
<int> &A
, ll b
) {
vector
<int> C
;
ll t
= 0;
for (int i
= 0; i
< A
.size() || t
; i
++) {
if (i
< A
.size()) t
+= A
[i
] * b
;
C
.push_back(t
% 10);
t
/= 10;
}
return C
;
}
int main() {
string a
;
ll b
;
vector
<int> A
, C
;
cin
>> a
>> b
;
for (int i
= a
.size() - 1; i
>= 0; i
--) A
.push_back(a
[i
] - '0');
C
= mul(A
, b
);
for (int i
= C
.size() - 1; i
>= 0; i
--) printf("%d", C
[i
]);
return 0;
}
四、除
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std
;
typedef long long ll
;
vector
<int> div(vector
<int> &A
, ll b
, ll
&t
) {
vector
<int> C
;
for (int i
= A
.size() - 1; i
>= 0; i
--) {
t
= t
* 10 + A
[i
];
C
.push_back(t
/ b
);
t
%= b
;
}
reverse(C
.begin(), C
.end());
while (C
.size() != 1 && C
.back() == 0) C
.pop_back();
return C
;
}
int main() {
string a
;
ll b
, t
= 0;
vector
<int> A
, C
;
cin
>> a
>> b
;
for (int i
= a
.size() - 1; i
>= 0; i
--) A
.push_back(a
[i
] - '0');
C
= div(A
, b
, t
);
for (int i
= C
.size() - 1; i
>= 0; i
--) printf("%d", C
[i
]);
printf("\n%lld", t
);
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-508567.html