大数相乘
发布时间:2020-12-14 01:56:28 所属栏目:大数据 来源:网络整理
导读:输入:两个字符串表示的大数(正整数),大数的含义是指超过了C++内嵌的数据类型(int,long等等)。 输出:两个数进行乘法的结果。 /*输入两个数字表示的字符串,计算其乘法的结果*/#include iostream#include stringusing namespace std;char* GetMUL(cons
输入:两个字符串表示的大数(正整数),大数的含义是指超过了C++内嵌的数据类型(int,long等等)。 输出:两个数进行乘法的结果。 /* 输入两个数字表示的字符串,计算其乘法的结果 */ #include <iostream> #include <string> using namespace std; char* GetMUL(const char* a,const char* b) { int *pRt = new int[strlen(a) + strlen(b) + 1]; memset(pRt,(strlen(a) + strlen(b) + 1) * sizeof(int)); //逐次对每一次进行乘法操作 for (int i = 0; i < strlen(a); i++) { for (int j = 0; j < strlen(b); j++) { pRt[i + j + 1] += (a[i] - '0') * (b[j] - '0'); } } //进位操作 for (int i = strlen(a) + strlen(b); i >= 0; i--) { if (pRt[i] >= 10) { pRt[i - 1] += pRt[i] / 10; pRt[i] %= 10; } } //创建一个字符串,用于对结果的保存 char* str = new char[strlen(a) + strlen(b) + 1]; memset(str,(strlen(a) + strlen(b) + 1) * sizeof(char)); int index = 0; while (pRt[index] == 0) index++; //将结果重新转换成字符串表示 for (int i = 0; index < strlen(a) + strlen(b); i++) { str[i] = pRt[index++] + 0x30; } delete pRt; return str; } int main() { char a[127] = {0}; char b[127] = {0}; char *pRt; while (std::cin >> a >> b) { pRt = GetMUL(a,b); std::cout <<"a * b = " << pRt << std::endl; delete pRt; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |