日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数的基本运算——大数乘法

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数的基本运算——大数乘法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大數:即超過了計算機定義類型的范圍的數,如126349678984*1321656546446546546546,這種運算的結果

太大,超過了基本類型的范圍,發生溢出,這樣我們就需要運用大數的算法來解決這個問題了。


大數乘法:

/** 大數乘法*/ #include <iostream> #include <string.h> using namespace std;void big_multiply(const char *a,const char *b) {int sizea,sizeb;sizea=strlen(a);sizeb=strlen(b);int *result=(int *)malloc(sizeof(int)*(sizea+sizeb));for(int i=0;i<sizea+sizeb;i++)result[i]=0;for(int i=0;i<sizea;i++)for(int j=0;j<sizeb;j++){result[i+j+1]+=(a[i]-'0')*(b[j]-'0');//空一位出來為后面的進位提供空間}for(int i=sizea+sizeb-1;i>=0;i--)//這里需要對result數組進行倒序的處理{if(result[i]>9){result[i-1]+=result[i]/10;//先把該進位的提出result[i]=result[i]%10;//得到余數}}int i=0;while(result[i]==0) i++;//當前面有為0的位時就計數,得到前面0的個數,后面就從第一個不是0的位輸出for(int j=i;j<sizea+sizeb;j++)cout<<result[j]; }int main() {string a,b;cout<<"超大數運算"<<endl<<"請輸入兩個大數:";cin>>a>>b;const char* p1=a.c_str();//格式轉換const char* p2=b.c_str();big_multiply(p1,p2);return 0; }


總結

以上是生活随笔為你收集整理的大数的基本运算——大数乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。