加法
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[255], b[255], c[255];
int main()
{
string s1, s2;
int la, lb, len;
cin >> s1 >> s2;
la = s1.size();
lb = s2.size();
for (int i = la - 1; i >= 0; i--) a[la - i - 1] = s1[i] - '0';
for (int i = lb - 1; i >= 0; i--) b[lb - i - 1] = s2[i] - '0';
if(la > lb) len = la;
else len = lb;
for (int i = 0; i < len; i++) c[i] = a[i] + b[i];
for (int i = 0; i < len; i++)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
if (c[len] > 0) len++;
for (int i = len - 1; i >= 0; i--) cout << c[i];
return 0;
}
减法
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[10086], b[10086], c[10086];
int main()
{
string s1, s2, s;
char fh;
int la, lb, k;
cin >> s1 >> s2;
if (s1 == s2)
{
cout << "0" << endl;
return 0;
}
la = s1.size();
lb = s2.size();
if (la < lb || ((la == lb) && (s1 < s2)))
{
fh = '-';
s = s1;
s1 = s2;
s2 = s;
}
la = s1.size();
lb = s2.size();
for (int i = la - 1; i >= 0; i--) a[la - i - 1] = s1[i] - '0';
for (int i = lb - 1; i >= 0; i--) b[lb - i - 1] = s2[i] - '0';
k = la - 1;
for (int t = 0; t < la; t++)
{
if (a[t] < b[t])
{
a[t + 1] -= 1;
a[t] += 10;
}
a[t] -= b[t];
}
while (a[k] == 0) k--;
if (fh == '-') cout << fh;
for (int i = k; i >= 0; i--) cout << a[i];
return 0;
}
乘法
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[2001], b[2001], c[4001];
int main()
{
string s1, s2;
int la, lb, len;
cin >> s1 >> s2;
la = s1.size();
lb = s2.size();
len = la + lb;
for (int i = la - 1; i >= 0; i--) a[la - i] = s1[i] - '0';
for (int i = lb - 1; i >= 0; i--) b[lb - i] = s2[i] - '0';
for (int i = 1; i <= la; i++)
{
for (int j = 1; j <= lb; j++)
{
c[i + j - 1] += a[i] * b[j];
}
}
for (int i = 1; i <= len; i++)
{
if (c[i] >= 10)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
int f = 0;
for (int i = len; i >= 1; i--)
{
if (c[i])
{
len = i;
break;
}
if (i == 1) f = 1;
}
if (f == 1) cout << 0;
else for (int i = len; i >= 1; i--) cout << c[i];
return 0;
}