永发信息网

C++的大数除法最快速度的算法PS:用顺序表做个容器将每位数都放进去,对其进行大数的运算,用的是循环

答案:2  悬赏:70  手机版
解决时间 2021-02-07 07:29
C++的大数除法最快速度的算法PS:用顺序表做个容器将每位数都放进去,对其进行大数的运算,用的是循环
最佳答案
通过移位、取模来大大提高效率,只是程序比较难理解,需要慢慢研究#include #include #include using namespace std;const int base = 10000; // (base^2) fit into intconst int width = 4; // width = log baseconst int N = 1000; // n * width:可表示的最大位数struct bint{int ln,v[N];bint (int r = 0) { // r应该是字符串!for (ln = 0; r > 0; r /= base) v[ln++] = r % base;}bint& operator = (const bint& r) {memcpy(this,&r,(r.ln + 1) * sizeof(int));// !return *this;}};bool operator int i;if (a.ln != b.ln) return a.ln for (i = a.ln - 1; i >= 0 && a.v[i] == b.v[i]; i--);return i }bool operator 0; i++) {if (i if (i res.v[i] = cy % base; cy /= base;}res.ln = i;return res;}bint operator - (const bint& a,const bint& b){bint res; int i,cy = 0;for (res.ln = a.ln,i = 0; i res.v[i] = a.v[i] - cy;if (i if (res.v[i] else cy = 0;}while (res.ln > 0 && res.v[res.ln - 1] == 0) res.ln--;return res;}bint operator * (const bint& a,const bint& b){bint res; res.ln = 0;if (0 == b.ln) { res.v[0] = 0; return res; }int i,j,cy;for (i = 0; i for (j=cy=0; j 0; j++,cy/= base) {if (j if (i + j if (i + j >= res.ln) res.v[res.ln++] = cy % base;else res.v[i + j] = cy % base;}}return res;}bint operator / (const bint& a,const bint& b){ // !b != 0bint tmp,mod,res;int i,lf,rg,mid;mod.v[0] = mod.ln = 0;
全部回答
这下我知道了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
潍坊市奎文区广文街道老年福利服务中心地址在
付费的招标中标网站中,哪个网站比较好?
女主角被戴上脚拷的小说
常熟锡剧团这个地址在什么地方,我要处理点事
12345678,8个号码2个一组可以组成多少注,
中国信合社atm地址在哪,我要去那里办事
梦见找自己的儿子,最后找到了
关于wow"准备突袭第三季"成就
活髓切断术A.年轻恒牙早期急性牙髓炎B.年轻恒
多又好儿童商场(爱婴室店)在什么地方啊,我要
张杰成名的挫折与经历
三省六部制的特点不包括A. 分工明确 B. 相互
执业药师考哪些科目
工厂每天下班的时候怕被偷东西用探测器对身体
中国平安财产保险股份有限公司重庆九龙坡支公
推荐资讯
怎样辨别西洋参的好与坏
快递从上海,到湖南要多久?
相对于频分复用传输系统,时分复用传输系统的
算命说我反将军关,天狗关能化解吗?
无证驾驶摩托车被抓,拍照留了姓名,但没开单
鹌鹑蛋吃多了脸上会不会长斑啊???
坦克世界闪电战,TD二选一,
中山纪念堂东一门怎么去啊,有知道地址的么
等腰三角形周长为10cm,底边BC长为ycm,腰AB
生活中的化学制品。有哪些
为何京东商城账号一直在加载中
已开发票怎么补开增值税应税货物或劳务销售清
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?