private string Multiplication(string num1, string num2)
{
var input1 = num1.Select(i => (int)(i - '0'));
var input2 = num2.Select(i => (int)(i - '0'));
//把num1依次和num2每位相乘,获取到一个m*n的矩阵
var rectangel = input2.Select(i => input1.Select(j => j * i).ToArray()).ToArray();
//将矩阵错位相加,得到输出数组
var result = new int[num1.Length + num2.Length];
for (int row = 0; row < num2.Length; row++)
{
for (int column = 0; column < num1.Length; column++)
{
result[column + row + 1] += rectangel[row][column];
}
}
//对输出中数组进行进位运算
for (int i = result.Length - 1; i >= 0; i--)
{
if (result[i] < 10)
continue;
result[i - 1] += result[i] / 10;
result[i] %= 10;
}
string returnStr=new string(result.Select(i => (char)(i += '0')).ToArray());
if(returnStr.StartsWith("0"))
{
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载