[小米OJ] 3. 大数相减
发布时间:2020-12-14 05:14:52 所属栏目:大数据 来源:网络整理
导读:题目链接 思路: 利用两个string保存相减的数,其他模拟即可。 参考了别人的一个处理减的步骤,很简洁好看。 ? string substract( string str1, string str2){ string str = "" ; int len = str1.length(); int a = 0 ,b = 0 ,c = 0 ; for ( int i = len - 1
题目链接 思路: 利用两个string保存相减的数,其他模拟即可。 参考了别人的一个处理减的步骤,很简洁好看。 ? string substract(string str1,string str2) { string str = ""; int len = str1.length(); int a = 0,b = 0,c = 0; for (int i = len - 1; i >= 0; i--) { a = str1[i] - ‘0‘; b = str2[i] - ‘0‘; str += ((a - b - c + 10) % 10) + ‘0‘; if (a - b - c >= 0) c = 0; else c = 1; } reverse(str.begin(),str.end()); return str; } 完整代码: #include <bits/stdc++.h> using namespace std; void init1(string input,string &str1,string &str2) { int index = input.find(‘-‘); for (int i = 0; i < input.length(); i++) { if (i < index) str1 += input[i]; else if (i > index) str2 += input[i]; } } void init2(string str1,string &str2) { while (str2.length() < str1.length()) { str2 = ‘0‘ + str2; } } string substract(string str1,str.end()); return str; } void print(string str) { while (str[0] == ‘0‘) { str.erase(str.begin()); } if (str.length() == 0) str = "0"; cout << str << endl; } int main() { string input,str,str1,str2; while (cin >> input) { init1(input,str2); init2(str1,str2); str = substract(str1,str2); print(str); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |