您的位置:首页 > 其它

大整数减法

2017-07-25 19:59 190 查看
参照算法笔记P174

1065. A+B and C (64bit) (20)

#include<stdio.h>
#include<string.h>
struct bign{
int d[1000];
int len;
};

void init(bign &a){
int i;
a.len=0;
for(i=0;i<1000;i++){
a.d[i]=0;
}
}

bign change(char *s){
bign a;
init(a);
int i,len=strlen(s);
a.len=len;
for(i=0;i<len;i++){
a.d[i]=s[len-1-i]-'0';
}
return a;
}

bign sub(bign a,bign b){
int i;
bign c;
init(c);
for(i=0;i<a.len||i<b.len;i++){
if(a.d[i]<b.d[i]){
a.d[i+1]--;
a.d[i]=a.d[i]+10;
}
c.d[c.len++]=a.d[i]-b.d[i];
}
while(c.len>=2&&c.d[c.len-1]==0){
c.len--;
}
return c;
}

void print(bign a){
int i;
for(i=a.len-1;i>=0;i--){
printf("%d",a.d[i]);
}
}
int main(){
char s1[1000],s2[1000];
scanf("%s %s",s1,s2);//默认s1代表的整数大于s2
bign a=change(s1);
bign b=change(s2);
bign c=sub(a,b);
print(c);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐