-1

"long" を使用せずに 2 つの大きな数の合計と乗算を行うにはどうすればよいですか?

それは配列である必要がありますか?だから..私が18 + 18の合計をしていると想像してください:

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

colmn ..8+5=13 --> 3 および 1+1+1 (3 番目の '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);

//「long」を使用できないため、pow() でこれを行うことはできません。つまり、配列内の要素ごとに実行し、結果を 3 番目の配列に提示する必要があります。

        }
        }


    }

}
4

1 に答える 1

1

structを使用したくない場合は、2 つの整数でを作成できますlong

このような:

struct BigInteger{
  int lowerInt;
  int upperInt;
}; 

そして、さまざまなアルゴリズムに従って、これらの構造を加算、減算、乗算、または除算できます。たとえば、乗算するには、Shift-And-Add 乗数アルゴリズムを使用できます。

しかし、これを行うと、重大なパフォーマンスの問題が発生します。自分自身を制限するのではなく、完全な言語を使用してください。

PS: 言語の問題は何ですか? C または C++?

于 2013-01-06T11:08:38.220 に答える