【问题描述】

  输入两个正整数,求他们的差。

【样例输入】

23456789723456789
123456789123456789

【样例输出】

-99999999400000000

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 char a1[10001],b1[10001],c1[10001];
int a[10001]={},b[10001]={},c[10001]={};
6 int main(){ 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 }

 

posted on 2018-06-28 15:40  Hankercat  阅读(167)  评论(0)    收藏  举报