私は(学校用の)プロジェクトを持っていますが、外部ライブラリを絶対に使用できないため、大きな数のライブラリを使用できず、2つの(非常に)大きな数の積を取得する必要があります。だから私は実際にそれのために自分のコードを書くと思ったが、一桁の乗算を渡すことができないようだ。
これまでに行った方法は、文字「a」の配列があることです。そして、その数字のそれぞれを他の数で乗算します (乗算は 81 を超えることはできないため、つまり 9*9 です)。しかし、2つの配列を互いに乗算する方法がわかりません。
のように、
int a[] = {1,2,3};
int b[] = {4,5,6};
int r[200]; // To store result of 123x456. After processing should have value 56088
これまでの私のコードはここにあります...
#include <iostream>
using namespace std;
void reverseArray(int array[], int n)
{
int t;
for(int i=0;i<n/2;i++)
{
t = array[i];
array[i] = array[n-i-1];
array[n-i-1] = t;
}
}
int main()
{
int A[] = {1,2,6,6,7,7,8,8,8,8,8,8,8,8,8,8};
int s = sizeof(A)/sizeof(int);
int n = s-1;
int R[50];
int x = 2;
int rem = 0;
for(int i=0; i<s; i++)
{
R[i] = (A[n-i] * x) % 10;
R[i] += (rem != 0) ? rem:0;
rem = (A[n-i] * x) / 10;
}
reverseArray(R, s);
for(int i=0; i<s; i++) cout<<R[i]; // Gives 2533557777777776
}
また、非常に大きな数の階乗を計算する同様のプログラムをここで見つけました。しかし、自分のニーズに合わせて変更するのに十分なほどコードを理解できていないようです。
質問が少し大ざっぱで申し訳ありません。
ありがとう。