加法
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int ia = a.size(), ib = b.size();
int cha[505] = {}, chb[505] = {};
for(int i = 500; i > 500 - a.size(); --i) {
cha[i] = a[--ia] - '0';
}
for(int i = 500; i > 500 - b.size(); --i) {
chb[i] = b[--ib] - '0';
}
for(int i = 500; i >= 0; --i) {
cha[i] += chb[i];
if(cha[i] > 9) {
cha[i] -= 10;
cha[i - 1] ++;
}
}
int k = 0;
while(cha[k] == 0 && k != 500) k++;
while(k <= 500) {
cout << cha[k];
k++;
}
}
乘法
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int ia = a.size(), ib = b.size(), k = 0, ans[1005] = {};
int cha[505] = {}, chb[505] = {};
for(int i = 500; i > 500 - a.size(); --i) {
cha[i] = a[--ia] - '0';
}
for(int i = 500; i > 500 - b.size(); --i) {
chb[i] = b[--ib] - '0';
}
for(int i = 500; i > 500 - a.size(); i--) {
for(int j = 500; j > 500 - b.size(); j--) {
ans[i + j] += cha[i]*chb[j];
}
}
for(int i = 1000; i > 0; --i) {
ans[i - 1] += ans[i] / 10;
ans[i] %= 10;
}
while(ans[k] == 0 && k != 1000) k++;
while(k <= 1000) {
cout << ans[k];
k++;
}
}