gpt4 book ai didi

c++ - 尝试以 child 方式乘法

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:29 25 4
gpt4 key购买 nike

我应该像小时候那样将两个 3 位数相乘。我需要将一个数字的每个数字与另一个数字的每个数字相乘,计算进位,添加单个产品并存储结果。我能够存储获得的 3 个产品(对于 I/P 234 和 456):140411700936..在二维数组中。

现在,当我尝试按以下方式排列它们时:001404011700093600轻松加法得到结果;通过:

for(j=5;j>1;j--)
{
xx[0][j]=xx[0][j-2];
}
for(j=4;j>0;j--)
{
xx[1][j]=xx[1][j-1];
}

xx 是我在其中存储了 3 个产品的二维数组。在我这样做之前一切似乎都很顺利:

xx[0][0]=0;
xx[0][1]=0;
xx[1][0]=0;

这就是事情出错的时候。这些值都混在一起了。在打印时,我得到 001400 041700 093604。我做错了什么?

最佳答案

假设 xx 的第一个索引是部分和,第二个索引是该和中的数字,并且部分和以最高数字存储在最低索引处,

for (int i = 0; i < NUM_DIGITS; i++) // NUM_DIGITS = number of digits in multiplicands
{
for (int j = 5; j >= 0; j--) // Assuming 5 is big enough
{
int index = (j - 1) - (NUM_DIGITS - 1) - i;
xx[i][j] = index >= 0 ? xx[i][index] : 0;
}
}

当然,肯定有更有效/合乎逻辑的方法可以做到这一点,例如避免单独存储数字,但在问题的限制范围内,这应该会给你正确的答案。

关于c++ - 尝试以 child 方式乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com