大数加法 自定义函数
2017-07-19 19:49
239 查看
jia(ans,a,b)相当于ans=a+b;
输入输出都用%s输入。
string版,区别不大。
输入输出都用%s输入。
#include<cstdio> #include<cstring> #include<map> #define bit 1000 using namespace std; int kase = 0; int jia(char ans[], char a1[], char b1[]) { int a[bit], b[bit], c[bit]; int lena, lenb, lenc, i, x; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); lena = strlen(a1); lenb = strlen(b1); for (i = 0; i <= lena - 1; i++) a[lena - i] = a1[i] - 48; for (i = 0; i <= lenb - 1; i++) b[lenb - i] = b1[i] - 48; lenc = 1; x = 0; while (lenc <= lena || lenc <= lenb) { c[lenc] = a[lenc] + b[lenc] + x; x = c[lenc] / 10; c[lenc] %= 10; lenc++; } c[lenc] = x; if (c[lenc] == 0) lenc--; int top = 0; for (i = lenc; i >= 1; i--) ans[top++] = c[i] + '0'; ans[top] = '\0'; return 0; }
string版,区别不大。
#include<cstdio> #include<cstring> #include<string> #include<map> #define bit 1000 using namespace std; int kase = 0; int jia(string ans, string a1, string b1) { int a[bit], b[bit], c[bit]; int lena, lenb, lenc, i, x; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); lena = a1.length(); lenb = b1.length(); for (i = 0; i <= lena - 1; i++) a[lena - i] = a1[i] - 48; for (i = 0; i <= lenb - 1; i++) b[lenb - i] = b1[i] - 48; lenc = 1; x = 0; while (lenc <= lena || lenc <= lenb) { c[lenc] = a[lenc] + b[lenc] + x; x = c[lenc] / 10; c[lenc] %= 10; lenc++; } c[lenc] = x; if (c[lenc] == 0) lenc--; int top = 0; for (i = lenc; i >= 1; i--) ans[top++] = c[i] + '0'; ans[top] = '\0'; return 0; }