大数的基本运算——大数乘法
生活随笔
收集整理的這篇文章主要介紹了
大数的基本运算——大数乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大數:即超過了計算機定義類型的范圍的數,如126349678984*1321656546446546546546,這種運算的結果
太大,超過了基本類型的范圍,發(fā)生溢出,這樣我們就需要運用大數的算法來解決這個問題了。
大數乘法:
/** 大數乘法*/ #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; }
總結
以上是生活随笔為你收集整理的大数的基本运算——大数乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 短视频直播带货响应式模板
- 下一篇: 论找对客服妹子对修改邓白氏码的公司信息的