【问题描述】
输入两个正整数,求他们的差。
【样例输入】
23456789723456789
123456789123456789
【样例输出】
-99999999400000000
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int main(){ 5 char a1[10001],b1[10001],c1[10001]; 6 int a[10001],b[10001],c[10001]; 7 int lena, lenb; 8 cin >> a1 >> b1; 9 //判断减数和被减数的大小 10 if(strlen(a1)<strlen(b1)||strlen(a1)==strlen(b1)&&strcmp(a1,b1)){ 11 //交换两个字符串 12 strcpy(c1,a1); 13 strcpy(a1,b1); 14 strcpy(b1,c1); 15 cout << "-"; 16 } 17 lena = strlen(a1); 18 lenb = strlen(b1); 19 for(int i = 0;i < lena; i++){ 20 a[i] = a1[lena-1-i] - 48; 21 } 22 for(int i = 0;i < lenb; i++){ 23 b[i] = b1[lenb-1-i] - 48; 24 } 25 int lenc = 0; 26 while(lenc < lena){ 27 if(a[lenc] < b[lenc]){ 28 a[lenc] += 10; 29 a[lenc+1]--; 30 } 31 c[lenc] = a[lenc] - b[lenc]; 32 lenc++; 33 } 34 //去掉前面多余的数字0 35 for(int i = lenc-1; i > 0; i--){ 36 if(c[i]==0){ 37 lenc--; 38 }else{ 39 break; 40 } 41 } 42 for(int i = lenc-1; i >= 0; i--){ 43 cout << c[i]; 44 } 45 return 0; 46 }