#include <iostream>
#include<string>
using namespace std;
string inverse(string);
void inverse_int(int *, int);
int main()
{
string x="", y="",tmp="";
int ch_to_int_x, ch_to_int_y,tmp_int;
int len_x, len_y,tmp_len;
bool flag = 0;
while (cin >> x>>y)
{
int arr[1000] = { 0 };
flag = 0;
len_x = x.length();
len_y = y.length();
if (len_y > len_x) //x比較長 y比較短
{
tmp = x;
tmp_len = len_x;
x = y;
len_x = len_y;
y = tmp;
len_y = tmp_len;
}
x = inverse(x);
y = inverse(y);
for (int i = 0; i <= len_y - 1; i++) //乘法
{
for (int j = 0; j <= len_x - 1; j++)
{
ch_to_int_y = y[i] - 48;
ch_to_int_x = x[j] - 48;
tmp_int = ch_to_int_y*ch_to_int_x;
arr[i + j] = arr[i+j]+tmp_int;
}
}
for (int k = 0; k <= len_x+len_y; k++) //進位
{
tmp_int = arr[k] / 10;
arr[k] = arr[k] % 10;
arr[k + 1] = arr[k + 1] + tmp_int;
}
for (int l = len_x + len_y;; l--) //範圍
{
if (arr[l] != 0)
{
tmp_int = l;
break;
}
}
inverse_int(arr, tmp_int);
for (int m = 0; m <= tmp_int; m++)
{
flag = 1;
cout << arr[m];
}
if (!flag)
cout << "0";
cout << endl;
}
return 0;
}
string inverse(string in)
{
string output=in;
char ch;
int max = in.length() - 1;
int len = in.length() / 2;
for (int i = 0; i < len; i++)
{
ch = in[max];
output[max] = output[i];
output[i] = ch;
max--;
}
return output;
}
void inverse_int(int *input,int flag)
{
int tmp;
int size = flag;
for (int i = 0; i < (flag+1) / 2; i++)
{
tmp = input[size];
input[size] = input[i];
input[i] = tmp;
size--;
}
}
怒....大小260->500->1000
回覆刪除