1812: 【基础】高精度减法
时间限制: 1 Sec 内存限制: 64 MB
提交: 2909 解决: 1628
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
高精度减法,求a-b a,b都不超过240位。( a >= b >= 0 )
输入
两个整数a,b 每行一个
输出
一个数
样例输入
33333333333333333333333333333333333333333
22222222222222222222222222222222222222222
样例输出
11111111111111111111111111111111111111111
题解如下
#include<stdio.h>
#include<string.h>
#include<math.h>
void reverse(char *array,int LEN)
{
for(int i=0;i<LEN/2;i++)
{
char temp=array[i];
array[i]=array[LEN-1-i];
array[LEN-1-i]=temp;
}
}
int main()
{
char ar[9999],br[9999];
scanf("%s%s",ar,br);
int LEN_ar=(int)strlen(ar);
int LEN_br=(int)strlen(br);
int Max_LEN=LEN_ar;
if(Max_LEN<LEN_br)
Max_LEN=LEN_br;
Max_LEN+=10;
reverse(ar, LEN_ar);
reverse(br, LEN_br);
for(int i=LEN_ar;i<Max_LEN;i++)
ar[i]='0';
for(int i=LEN_br;i<Max_LEN;i++)
br[i]='0';
int result[Max_LEN];
for(int j=0;j<Max_LEN;j++)
{
result[j]=ar[j]-br[j];
}
for(int k=0;k<Max_LEN-1;k++)
{
if(result[k]<0)
{
result[k]+=10;
result[k+1]-=1;
}
}
int flag=0;
for(int l=Max_LEN-1;l>=0;l--)
{
if(result[l]!=0)
flag=1;
if(flag==1)
printf("%d",result[l]);
}
if(flag==0)
printf("0");
return 0;
}