大数加减

原创 2018年04月16日 18:28:37
给出2个大整数A,B,计算A+B的结果。
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 10000 需注意:A B有可能为负数)
Output
输出A + B
Input示例
68932147586
468711654886
Output示例

537643802472


#include<stdio.h>
#include<string.h>
char a[10005],b[10005];
int c[100000]={0},d[100000]={0};
int jia(char a[],char b[],int x,int y)
{
int i;
for(i=0;i<x;i++)
c[x-i]=a[i]-'0';
for(i=0;i<y;i++)
d[y-i]=b[i]-'0';
for(i=1;i<x+y;i++)
{
c[i]+=d[i];
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
}
int jian(char a[],char b[],int x,int y)
{
int i;
for(i=0;i<x;i++)
c[x-i]=a[i]-'0';
for(i=0;i<y;i++)
d[y-i]=b[i]-'0';
for(i=1;i<x+y;i++)
c[i]=c[i]-d[i];
for(i=1;i<x+y;i++)
{
if(c[i]<0)
{
while(c[i]<0)
{
c[i+1]=c[i+1]-1;
c[i]+=10;
}
}
}
}
int main()
{
int i,j,l,x,y;
scanf("%s",a);
scanf("%s",b);
x=strlen(a);
y=strlen(b);
if(a[0]=='-'&&b[0]!='-')
{
if(x-1>y)
{
a[0]='0';
printf("-");
jian(a,b,x,y);
}
else if(x-1<y)
{
a[0]='0';
jian(b,a,y,x);
}
else
{
a[0]='0';
if(strcmp(a+1,b)>0)
{
printf("-");
a[0]='0';
jian(a,b,x,y);
}
else if(strcmp(a+1,b)<0)
{
a[0]='0';
jian(b,a,y,x);
}
else
{
printf("0\n");
return 0;
}
}
}
else if(a[0]!='-'&&b[0]=='-')
{
if(y-1>x)
{
b[0]='0';
printf("-");
jian(b,a,y,x);
}
else if(y-1<x)
{
b[0]='0';
jian(a,b,x,y);
}
else
{
b[0]='0';
if(strcmp(a,b+1)>0)
{
b[0]='0';
jian(a,b,x,y);
}
else if(strcmp(a,b+1)<0)
{
printf("-");
b[0]='0';
jian(b,a,y,x);
}
else
{
printf("0\n");
return 0;
}
}
}
else if(a[0]=='-'&&b[0]=='-')
{
a[0]=b[0]='0';
printf("-");
jia(a,b,x,y);
}
else if(a[0]!='-'&&b[0]!='-')
{
jia(a,b,x,y);
}
l=x+y;
while(l>=1)
{
if(c[l]!=0)
break;
l--;
}
if(l<1)
{
printf("0\n");
return 0;
}

for(i=l;i>=1;i--)
printf("%d",c[i]);
return 0;
 } 

链表实现大数加法

链表实现大数加法标签: 算法Description你的任务是完成一条能实现加法功能的单向链表,需要实现的函数在头文件已给出。 假如现在有 123 与 234 两个数字,那么他们在链表中的存储结构将会...
  • A_bigUncle
  • A_bigUncle
  • 2017-05-16 21:12:35
  • 352

大数算法之大数加减法

大数算法之大数加减法 当我们第一次编程,成功地在黑洞洞的控制台窗口中打印出“Hello World”的字符后,准备编写的第一个有实用性的程序是什么?我想,对于大多数人而言,这一问题的答案会是:四则...
  • DeathSaint
  • DeathSaint
  • 2017-10-28 19:01:46
  • 1396

大数加减乘除c++类

  • 2010年11月18日 17:11
  • 29KB
  • 下载

c++实现大数的加减乘运算(数组存放)

应用中需要解决大数运算问题,请设计无符号大数类,能支持+,-,*,比较运算和输出,假定本题大数在200位以内,输入数据均合法。...
  • Code_Prince
  • Code_Prince
  • 2017-11-01 18:37:52
  • 330

任意大数的加减运算器

  • 2008年01月14日 13:27
  • 174KB
  • 下载

java 大数加减乘除

import java.math.BigInteger; public class BigIntegers { public static void main(String[] args) {...
  • l2533636371
  • l2533636371
  • 2017-04-14 21:22:34
  • 973

C++大数相加减

  • 2012年01月14日 14:14
  • 180KB
  • 下载

大数加减法总结

大数加减法总结(包括整数或者负数): 1、先解决不带符号的数的加减法 2、根据加数或者减数的符号位判断该选择加法还是减法计算,并且赋予结果对应的符号 需要注意的是:不带符号的减法产生的结果可能高...
  • dzyhenry
  • dzyhenry
  • 2014-10-20 00:22:50
  • 1861

大整数的四则运算(C语言实现)(2)——大整数的加法和减法运算

对于加法运算,存在以下四种情况: 1. + -:传入相减函数,然后返回结果即可 2. - +:交换两个数,传入相减函数,返回结果即可 3. ++:直接传入加法函数,返回结果即可 4. - -:...
  • FelikZhang
  • FelikZhang
  • 2018-01-02 18:36:34
  • 143

c++单链表实现大数的求和运算

首先list.h #ifndef LIST_H #define LIST_H #include #include #include using namespace std; typedef ...
  • github_36186488
  • github_36186488
  • 2016-11-03 13:36:15
  • 1414
收藏助手
不良信息举报
您举报文章:大数加减
举报原因:
原因补充:

(最多只允许输入30个字)