这个思想既简单,又实用真心不错,!
就是那种简便运算其实,
把一个数字拆分成各位,十位,百位等等,然后就可以确定结果到底在哪一位上了,
进位的时候就可以按照超出10 没有超出10 来计算了!
贴出代码:
没有写好呀...
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
using namespace std;
char str_a[1111];
char str_b[1111];
int num_a[1111];
int num_b[1111];
int ans[3333];
int len_a;
int len_b;
void Init()
{
memset(num_a, 0, sizeof(num_a));
memset(num_b, 0, sizeof(num_b));
memset(ans, 0, sizeof(ans));
}
void GetDigit()
{
len_a = strlen(str_a);
len_b = strlen(str_b);
// cout << "len_a = " << len_a << endl;
// cout << "len_b = " << len_b << endl;
for (int i = 0; i < len_a; i++)
{
num_a[i] = str_a[len_a - 1 - i] - '0';
}
for (int i = 0; i < len_b; i++)
{
num_b[i] = str_b[len_b - 1 - i] - '0';
}
}
void Solve()
{
GetDigit();
for (int i = 0; i < len_a; i++)
{
for (int j = 0; j < len_b; j++)
{
ans[i + j + 1] += num_a[i] * num_b[j];
// cout << "i + j + 1" << i + j + 1 << endl;
// cout << "ans = " << ans[i +j + 1] << endl;
}
}
for (int i = 0; i < len_a + len_b; i++)
{
if (ans[i] >= 10)
{
ans[i + 1] += ans[i] / 10;
ans[i] = ans[i] % 10;
}
}
int cnt;
// system("pause");
for (cnt = len_a + len_b; cnt >= 0; cnt--)
{
if (ans[cnt])
{
break;
}
}
// cout << "cnt = " << cnt << endl;
// system("pause");
for (int i = cnt; i >= 1; i--)
{
cout << ans[i];
}
cout << endl;
}
int main()
{
cout << "Please input two numbers : " << endl;
while(cin >> str_a >> str_b)
{
Init();
Solve();
cout << "Please input two numbers : " << endl;
}
system("pause");
return 0;
}