您的位置:首页 > 其它

大数加法 自定义函数

2017-07-19 19:49 239 查看
jia(ans,a,b)相当于ans=a+b;

输入输出都用%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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: