希望出了错误, 您能够大方地花些时间, 斧正代码。 感谢!
#include<cstdio>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
const int N = 100000;
int a[N], b[N], c[N], lena, lenb, lenc;
string x, y;
void jinwei() {
for(int i = 1; i <= lenc; i++) if(c[i] >= 10) {
c[i+1] += c[i]/10;
c[i] %= 10;
if(i == lenc) lenc++;
}
while(lenc && c[lenc] == 0) lenc--;//保证lenc不为负
}
int main() {
cin>>x>>y;
lena = x.length(), lenb = y.length();
/*if(lena < lenb || (lena==lenb && x < y)) {//减法时使用
swap(x, y);
swap(lena, lenb);//保证a>=b
printf("-");
}*/
for(int i = 0; i < lena; i++) a[lena-i] = x[i]-'0';
for(int i = 0; i < lenb; i++) b[lenb-i] = y[i]-'0';
// for(int i = lena; i >= 1; i--) printf("%d", a[i]);
// printf("\n");
// for(int i = lenb; i >= 1; i--) printf("%d", b[i]);
// printf("\n");
//高精加: 非负数相加
/* lenc = max(lena, lenb);
for(int i = 1; i <= lenc; i++) c[i] = a[i]+b[i];
jinwei();*/
//高精减
/* for(int i = 1, j = 1; i <= lena || j <= lenb; i++, j++) {
if(a[i] < b[i]) {a[i] += 10; --a[i+1];}
c[i] = a[i] - b[i];
}
lenc = lena;
while(c[lenc] == 0 && lenc) lenc--;//注意使lenc不为负 */
//高精乘
/* for(int i = 1; i <= lena; i++)
for(int j = 1; j <= lenb; j++)
c[i+j-1] += a[i]*b[j];
lenc = lena+lenb-1;
jinwei();*/
if(lenc == 0) printf("0");
else for(int i = lenc; i > 0; i--) printf("%d", c[i]);
return 0;
}
//高精除低精
/* for(int i = lena; i >= 1; i--) {
a[i-1] += (a[i]%k)*10;
a[i] = a[i]/k;
}
while(a[lena] == 0 && lena) lena--;
if(lena == 0) printf("0");
else for(int i = lena; i >= 1; i--) printf("%d", a[i]);*/
//高精%低精
/* int yushu = 0;
for(int i = lena; i >= 1; i--) {
yushu = yushu*10+a[i];
yushu %= k;
}
printf("%d", yushu);*/
原文:https://www.cnblogs.com/tyner/p/11805752.html