-1

如何在不使用“long”的情况下对 2 个大数进行求和和乘法?

它必须与数组一起使用吗?所以..想象一下我在做 18+18 的总和:

 18
+15
array1 (1,8)
array2 (1,5)

我需要通过 colmn ..8+5=13 --> 3 和 1+1+1 进入它的列(第三个“1”来自溢出)。

..所以我需要对数组中的每个元素都这样做

#include <stdio.h>
#include <conio.h>
#include <vectors.h>

int main()
{

int array1 ???
int array2 ???

printf("first number");
scanf();

printf("second number");
scanf();


printf("To Sum Enter 'S', to Multiply Enter 'M'");
scanf();


If(M){

//下面的代码是错误的,因为我仍然必须使用“长”属性......

 while(i=1,i<LA2,i++){
while(j=1,j<LA1,j++){
    A1[i]*A2[j]*10^(i+j-2);

            }
            }
   }

If(S){

 while(i=1,i<LA2,i++){
while(j=1,j<LA1,j++){
    A1[i]*A2[j]*10 pow(i+j-2);

//不能用 pow() 做到这一点,因为我不能使用“long”,这意味着我必须在数组中逐个元素地执行它并将结果呈现在第三个数组中

        }
        }


    }

}
4

1 回答 1

1

struct如果您不想使用 a ,可以使用两个整数创建a long

像这样:

struct BigInteger{
  int lowerInt;
  int upperInt;
}; 

然后您可以根据各种算法对这些结构进行加、减、乘或除。例如,要相乘,您可以使用 Shift-And-Add 乘数算法。

但是这样做会带来严重的性能问题。使用完整的语言而不是限制自己。

PS:这是什么语言问题?C 还是 C++?

于 2013-01-06T11:08:38.220 回答