大数相减(A -B)(A>B)
发布时间:2020-12-14 03:07:18 所属栏目:大数据 来源:网络整理
导读:#includecstdio#includestring.h#includemalloc.h#includestdlib.h#define M 100000int main(){ int T; scanf("%d",T); while(T--) { char *a,*b; a=(char*)malloc(sizeof(char)*M); b=(char*)malloc(sizeof(char)*M); scanf("%s%s",a,b); int i,j,alen,blen
#include<cstdio> #include<string.h> #include<malloc.h> #include<stdlib.h> #define M 100000 int main() { int T; scanf("%d",&T); while(T--) { char *a,*b; a=(char*)malloc(sizeof(char)*M); b=(char*)malloc(sizeof(char)*M); scanf("%s%s",a,b); int i,j,alen,blen; alen=strlen(a); blen=strlen(b); int *aa,*bb; aa=(int*)malloc(sizeof(int)*alen); bb=(int*)malloc(sizeof(int)*alen); for(i=0;i<alen;i++) aa[i]=bb[i]=0; for(i=alen-1,j=0;i>=0;i--,j++) aa[j]=a[i]-'0'; for(i=blen-1,j++) bb[j]=b[i]-'0'; int *c; c=(int*)malloc(sizeof(int)*alen); for(i=0;i<alen;i++) c[i]=0; for(i=0;i<alen;i++)//此种与下面注释1的相同 c[i]=aa[i]-bb[i];//注意此处不是c[i]=a[i]-b[i];无意义 for(i=0;i<alen;i++) { //c[i]+=aa[i]-bb[i];//注释1 //{if(c[alen-1]<1)//这种格式与下面的这种注释2{}相对应 //alen-=1;} if(c[i]<0) { c[i]+=10; c[i+1]-=1; } } for(i=alen-1;i>=0&&c[i]==0;i--) ; if(i>=0) for(;i>=0;i--) printf("%d",c[i]); else printf("0"); printf("n"); /*{ for(i=alen-1;i>=0;i--)//注释2 printf("%d",c[i]); printf("n"); } */ free(a); free(b); free(aa); free(bb); free(c); } return 0; } /* void dele(char *a,char *b)//假设alen>beln { if(a==NULL||b==NULL) return ; int i,blen; int lmax,lmin,p=0; alen=strlen(a); blen=strlen(b); int *aa,*bb; aa=(int*)malloc(sizeof(int)*alen); bb=(int*)malloc(sizeof(int)*alen); for(i=0;i<alen;i++) aa[i]=bb[i]=0; for(i=alen-1,j++) bb[j]=b[i]-'0'; int *c; c=(int*)malloc(sizeof(int)*alen); for(i=0;i<alen;i++) c[i]=0; for(i=0;i<alen;i++)//此种与下面注释1的相同 //去0输出 c[i]=aa[i]-bb[i]; for(i=0;i<alen;i++) { //c[i]+=aa[i]-bb[i];//注释1 //{if(c[alen-1]<1)//这种格式最后的输出与下面的注释2{}相对应 //alen-=1; } if(c[i]<0) { c[i]=c[i]+10; c[i+1]=c[i+1]-1; } } for(i=alen-1;i>=0&&c[i]==0;i--) ; if(i>=0) for(;i>=0;i--) printf("%d",c[i]); else printf("0"); printf("n"); //{for(i=alen-1;i>=0;i--)//注释2 //printf("%d",c[i]); // printf("n");} free(aa); free(bb); free(c); } int main() { int T; scanf("%d",&T); while(T--) { char *a,*b; a=(char*)malloc(sizeof(char)*M); b=(char*)malloc(sizeof(char)*M); scanf("%s%s",b); dele(a,b); free(a); free(b); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |