A*B

计算两个非负整数A,B 的乘积,A,B 可能会很大。
输入格式
第一行输入一个非负整数A 。
第二行输入一个非负整数B 。
A,B的长度不大于500 。
输出格式
输出 A*B 的值。
样例输入
4321
1234
样例输出
5332114
题解:
先将输入的数字转换为字符串,然后进行运算,再将字符串转回来。用5个字符数组来存储输入的两个数,转换后的两个数,积。
代码:

#include<iostream>
#include<string>
using namespace std;
char a[20000], b[20000];
int ReverseA[20000], ReverseB[20000];
int result[40000];
int main(void)
{
 string a, b;
 cout << "请输入两个数:";
 cin >> a >> b;
 int x, len_a = a.length(), len_b = b.length();
 //s.length()的意思是计算字符串s的长度,其返回值是一个整数
 for (int i = 0; i <= len_a - 1; i++) {
  ReverseA[i] = a[len_a - 1 - i] - '0';
 }
 for (int i = 0; i <= len_b - 1; i++) {
  ReverseB[i] = b[len_b - 1 - i] - '0';
 }
 for (int i = 0; i < len_a; i++) {
  for (int j = 0; j < len_b; j++) {
   result[i + j] += ReverseA[i] * ReverseB[j];
  }
 }
 for (x = 0; x < len_a + len_b; x++){
  result[x + 1] += result[x] / 10;
  result[x] = result[x] % 10;
 }
 while (result[x] == 0 && x > 0){
  x--;
 }
 cout << "乘积为:";
 for (x; x >= 0; x--) {
  cout << result[x];
 }
 
 return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43612495/article/details/86474078
ab