大数乘法
发布时间:2020-12-14 01:42:36 所属栏目:大数据 来源:网络整理
导读:#include iostream #include cstring using namespace std ; class MData { private : int n , m ; char * str1 ,* str2 ; public : char * GetSum (); MData (); MData ( const char * s1 , const char * s2 ); void init ( const char * s1 , const char *
#include
<iostream>
#include<cstring> using namespace std; class MData {
private: int n,m; char *str1,*str2; public: char *GetSum(); MData(); MData(const char *s1,const char * s2); void init(const char *s1,const char * s2); ~MData(); };
MData::MData() {
str1=nullptr; str2 = nullptr; n = 0; m = 0; }
MData::MData(const char *s1, const char *s2) {
n = (int)strlen(s1); m = (int)strlen(s2); str1 = new char[n+1]{' '}; str2 = new char[m+1]{' '}; strcpy(this->str1,s1); strcpy(this->str2,s2); }
void MData::init(const char *s1,s2); }
MData::~MData() {
if(str1!=nullptr) delete[] str1; if(str2!=nullptr) delete[] str2; }
char* MData::GetSum() {
//cout<<str1<<endl<<str2<<endl<<n<<endl<<m<<endl; int *s = new int[n+m]; for(int i = 0;i<n+m;i++) { s[i] = 0; } for(int i = 0;i<n;i++) for(int k = 0;k<m;k++) { s[i+k+1] += (str1[i]-'0')*(str2[k]-'0'); } // for(int i = 0;i<n+m;i++) // { // cout<<s[i]<<endl; // } for(int i = n+m-1;i>=0;i--) { if(s[i]>=10) { s[i-1] += s[i]/10; s[i] %= 10; } } int i = 0; while(s[i] == 0) { i++; } char *sum = new char[n+m-i+1]{' '}; int k = 0; int kn = n+m-i+1; for(;k<kn&&i<n+m;k++,i++) { sum[k] = s[i]+'0'; } sum[k] = ' '; delete[] s; return sum; }
int main() {
char *str1=new char[100]{' '},*str2=new char[100]{' '}; cin>>str1; cin>>str2; MData sk(str1,str2); char *fk = sk.GetSum(); cout << fk << endl; delete[]str1; delete[]str2; return 0; }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |