一起学习交流~

大整数计算-03-减法

算法 laomuji 11个月前 (11-06) 417次浏览 已收录 0个评论

一、原理

首先看减法的位数

9-9=0

99-99=0

99-9=90

也就是说,最多位数是其中比较大的数字的位数,最少位数是1

比之前的加法还要简单,原理和加法很像,不多解释了

二、代码

static string m_subtract(const string& data1, const string& data2)
	{
		//假设data1长度比data2长
		const char* num1 = data1.c_str();
		const char* num2 = data2.c_str();
		int len1 = data1.size() - 1;
		int len2 = data2.size() - 1;
		int len3 = len1;
		char* result = new char[len3 + 2]{ 0 };
		for (int i = 0; i <= len1; i++)result[i] = num1[i];
		for (int i = 0; i <= len2; i++)
		{
			char temp = (result[len3 - i] - '0') - (num2[len2 - i] - '0');
			if (temp < 0)
			{
				temp += 10;
				result[len3 - i - 1] -= 1;
			}
			result[len3 - i] = temp + '0';
		}

		string data3;
		result[len3 + 1] = 0;//结束符
		int zero = 0;
		while (result[zero] == 0 || result[zero] == '0')zero++;
		if (zero == len3 + 1)zero--;
		data3 = result + zero;
		delete[] result;
		return data3;
	}
喜欢 (0)
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论