【C++】高精度乘法

来源:互联网 发布:进出口贸易数据 编辑:程序博客网 时间:2024/05/21 05:04

计算超过long范围的两个数的乘积

#include <iostream>#include <string>using namespace std;int* suma(int m[],int n[]);int* mul(int m[],int e);int main(void){const int max = 200;int m[max] = {0};int n[max] = {0};int c[2*max] = {0};string a,b;cin >> a;int s = a.length();cin >> b;int k = b.length();if(s>=k){for(int i = 0;i<s;i++)m[s-i-1] = a[i]-'0';for(int i = 0;i<k;i++)n[k-i-1] = b[i]-'0';}else{int temp = s;s = k;k = temp;        for(int i = 0;i<s;i++)m[s-i-1] = b[i]-'0';    for(int i = 0;i<k;i++)n[k-i-1] = a[i]-'0';}int y = 0,i = 0,j = 0,e = 0;for(i = 0;i<k;i++){y = 0;for(j = 0;j<s;j++){c[2*max-y-e-1] += m[j]*n[i];y++;}e++;}int p = 2*max-1;while(p>0){c[p-1] += c[p]/10;c[p] %= 10;p--;}int z = 0;while(c[z]==0){    z++;}for(int i = z;i<2*max;i++){printf("%d",c[i]);}}


0 0
原创粉丝点击