大数乘法
发布时间:2020-12-14 03:15:33 所属栏目:大数据 来源:网络整理
导读:void Reverse(string str){//字符串翻转 int Size = str.size(); int i = 0; int j = Size - 1; while(i j){ char temp = str[i]; str[i++] = str[j]; str[j--] = temp; }}string Multiplic(string big_num_a,string big_num_b){//大数乘法 Reverse(big_num_
void Reverse(string &str){//字符串翻转 int Size = str.size(); int i = 0; int j = Size - 1; while(i < j){ char temp = str[i]; str[i++] = str[j]; str[j--] = temp; } } string Multiplic(string &big_num_a,string &big_num_b){//大数乘法 Reverse(big_num_a); Reverse(big_num_b); int n = big_num_a.size(); int m = big_num_b.size(); int big_num_len = m + n; int big_num_c[100]; memset(big_num_c,sizeof(big_num_c)); for(int i = 0;i < big_num_a.size();i++){//计算各个位数的和 for(int j = 0;j < big_num_b.size();j++){ big_num_c[i+j] += (big_num_a[i] - '0') * (big_num_b[j] - '0'); } } int c = 0;//进位 int t; for(int i = 0;i < m + n;i++){//进位计算 t = big_num_c[i] + c; big_num_c[i] = t % 10; c = t / 10; } if(!big_num_c[m+n-1]) big_num_len --; string strC; for(int i = big_num_len-1;i >=0;i--)//把得到的值进行翻转 strC += big_num_c[i] + '0'; return strC; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |