大数减法(C++实现)
发布时间:2020-12-14 04:41:29 所属栏目:大数据 来源:网络整理
导读:思路: 和大数加法是一样的,只不过加变成了减。 ? 1 #includeiostream 2 #includecstring 3 #includealgorithm 4 using namespace std; 5 const int L= 110 ; 6 string sub( string a, string b) // 只限两个非负整数相加 7 { 8 9 string ans; 10 int na[L]
思路: 和大数加法是一样的,只不过加变成了减。 ? 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int L=110; 6 string sub(string a,string b)//只限两个非负整数相加 7 { 8 9 string ans; 10 int na[L] = {0}; 11 int nb[L] = {0}; 12 int la = a.size(); 13 int lb = b.size(); 14 //倒序存储 15 for (int i=0;i<la;i++) 16 { 17 na[la-1-i] = a[i]-‘0‘; 18 } 19 //倒叙存储 20 for (int i=0;i<lb;i++) 21 { 22 nb[lb-i-1] = b[i]-‘0‘; 23 } 24 int lmax = max(la,lb); 25 //从个位开始相减 26 for (int i=0;i<lmax;i++) 27 { 28 na[i] -= nb[i]; 29 while (na[i]<0) 30 { 31 na[i] += 10; 32 na[i+1]--; 33 } 34 } 35 //处理前置0 36 while (!na[lmax]) 37 lmax--; 38 if (lmax<0) 39 ans = "0"; 40 else { 41 for (int i = lmax; i >= 0; i--) 42 ans += na[i] + ‘0‘; 43 } 44 return ans; 45 } 46 int main() 47 { 48 string a,b; 49 while(cin>>a>>b) cout<<sub(a,b)<<endl; 50 return 0; 51 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |