大整数减法1121
题目描述:
给出两个200位以内的正数,算出第一个数减第二个数的值(结果为正)。
输入描述:
每组测试数据包括两行,第一行为被减数,第二行为减数。
输出描述:
每组测试数据输出一行,为所求两个整数之差。
样例输入:
987
654
样例输出:
333
思想:注意每次的借位,尤其是最后一步的借位操作
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string a,b; 6 int i,j,length,p; 7 while(cin>>a>>b){ 8 int per=0,k=0,zero=0; 9 length=a.size()-b.size(); 10 j=a.size()-1; 11 int min[j]; 12 string zeros(length,'0'); 13 b=zeros+b; 14 for(i=j;i>=0;i--){ 15 p=(a[i]-'0')-(b[i]-'0')-per; 16 if(p<0){ 17 p=p+10; 18 min[j--]=p; 19 per=1; 20 } 21 else{ 22 min[j--]=p; 23 per=0; 24 } 25 } 26 while(min[k]==0){ 27 k++; 28 if(k==a.size()){ 29 break; 30 } 31 } 32 if(k==a.size()){ 33 cout<<zero; 34 } 35 else{ 36 for(i=k;i<a.size();i++){ 37 cout<<min[i]; 38 } 39 } 40 cout<<endl; 41 } 42 return 0; 43 }
转载请标明出处