题目名称
高精度减法
题目描述
输入两个高精度数(长度不超过100位)a,b。
求a-2b的值。
输入描述
共2行,第1行是被减数a,第2行是减数b(a>2b并且a,2b的位数不同且不存在借位,且b+b不存在借位)。
输出描述
一行,即所求的差。
输入样例
888888888888888888888888
44444444
输出样例
888888888888888800000000
说明
高精度数长度不超过100位,a>2b并且a,2b的位数不同且不存在借位,且b+b不存在进位。
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
-----------------------------------------------请认真思考后查看源码----------------------------------------------------
完整代码
#include
using namespace std;
int main(){
char a1[1001]={},a2[1001]={};
int b1[1001]={},b2[1001]={},b3[1001]={};
cin>>a1>>a2;
int len1=strlen(a1);
int len2=strlen(a2);
if(len2>len1 || (len2==len1) && strcmp(a1,a2)<0){
swap(a1,a2);
swap(len1,len2);
cout<<"-";
}
for(int i=0;i<len1;i++){
b1[len1-1-i]=a1[i]-'0';
}
for(int i=0;i<len2;i++){
b2[len2-1-i]=a2[i]-'0';
}
int lenc=len1;
for(int i=0;i<lenc;i++){
if(b1[i]<b2[i]){
b1[i]+=10;
b1[i+1]--;
}
b3[i]=b1[i]-b2[i];
}
while(b3[lenc-1]==0){
lenc--;
if(lenc==1){
break;
}
}
for(int i=lenc-1;i>=0;i--){
cout<< b3[i] ;
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)