這篇文章將為大家詳細講解有關C++怎么實現(xiàn)大整數(shù)乘法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站設計、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的凌河網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!算法競賽入門經(jīng)典 這本書并沒有對大數(shù)乘法實現(xiàn),所以自己補充了一下,乘法的實現(xiàn)很簡單,就是再其數(shù)據(jù)結(jié)構(gòu)基礎上把每寬為8位的十進制數(shù)看成多項式的系數(shù),vector的下標看成多項式的指數(shù),然后再對應相乘相加就可以了,注意系數(shù)超過8位 將超八位的補分進位。
我這里是笛卡爾相乘。一般來說是夠用的。
但其實多項式乘法算法還有很多更高效的。
#include#include #include #include using namespace std; typedef long long LL; struct BigInteger{ static const int BASE = 100000000; static const int WIDTH = 8; vector s; BigInteger operator = (const string& str){ s.clear(); int x, len=(str.length()-1)/WIDTH+1; for(int i=0;i s.size(),lenb=b.s.size(),lenc=lena+lenb-1; LL *buf =new LL[lenc+1]; for(int i=0;i s[i])*((LL)b.s[j]); buf[i+j+1]+=buf[i+j]/BASE; buf[i+j]=buf[i+j]%BASE; } for(int i=0;i =0;i--){ int buf=b.s[i],h=8; while(buf>0){buf/=10;h--;} for(int j=0;j 關于“C++怎么實現(xiàn)大整數(shù)乘法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:C++怎么實現(xiàn)大整數(shù)乘法-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/csphjp.html