大整数 a-b

来源:互联网 发布:淘宝获取店铺失败原因 编辑:程序博客网 时间:2024/05/17 00:15
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;struct sz{                       //结构体定义 int d[1000];int len;sz(){                     //初始化结构体 memset(d,0,sizeof(d));len =0;}};sz fun(char s[])                 //将字符串转化为int型存入数组 {sz a;a.len=strlen(s);for(int i=0;i<a.len;i++){a.d[i]=s[a.len-1-i]-'0';}return a;}int cmp(sz a1,sz a2)               //比较输入的两个值得大小 {if(a1.len >a2.len ) return 1;else if(a1.len <a2.len ) return -1;else{for(int i=a1.len -1;i>=0;i--){if(a1.d[i]>a2.d[i]) return 1;else if(a1.d[i]<a2.d[i]) return -1;}return 1;}}sz sub(sz a1,sz a2)                 //减法运算 {sz c;for(int i=0;i<a1.len ;i++){if(a1.d[i]>=a2.d[i]) c.d[c.len ++]=a1.d[i]-a2.d[i];else{a1.d[i]+=10;a1.d[i+1]--;c.d[c.len ++]=a1.d[i]-a2.d[i];}}return c;}int main(){char s1[1000], s2[1000];while(~scanf("%s %s",s1,s2)){sz a1,a2,c;a1=fun(s1);a2=fun(s2);int p=cmp(a1,a2);if(p==1){c=sub(a1,a2);}else{c=sub(a2,a1);}if(p!=1) printf("-");int i;for(i=c.len-1;i>=1;i--)   //输出处理 {if(c.d[i]!=0) break; }  for(i;i>=0;i--) printf("%d",c.d[i]); printf("\n");}}//  多样例输入   a+b 

0 0
原创粉丝点击