C++大数乘法

    xiaoxiao2021-04-04  36

    #include <iostream> #include <string.h> #include<vector> #include<stdlib.h>  using namespace std;

     void multiply(const char *a,const char *b);

    int main() {

            string num1,num2;     // string存储大数     cout<<"输入两个数字形式大数: "<<endl;     cin>>num1>>num2;         const char *p1=num1.c_str();    // 将string转为 const char *     const char *p2=num2.c_str();    // 将string转为 const char *     multiply(p1,p2);    

        return 0; }

    void multiply(const char *a,const char *b) {      int n1,n2;      n1=strlen(a);      n2=strlen(b);      vector<int> s;             for (int i=0;i<n1+n2;i++)    s.push_back(0);      // 每个元素赋初值0           for (int i=0;i<n1;i++)          for (int j=0;j<n2;j++)              s[i+j+1]+=(a[i]-'0')*(b[j]-'0');                   for (int i=n1+n2-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++;   // 跳过头部0元素      for (;i<n1+n2;i++)       cout<<s[i];      cout<<'\0'<<endl;     }

    转载请注明原文地址: https://ju.6miu.com/read-666190.html

    最新回复(0)