02.大数阶乘——算法分析&程序设计

02.大数阶乘——算法分析&程序设计

ID:5504363

大小:338.50 KB

页数:10页

时间:2017-11-16

02.大数阶乘——算法分析&程序设计_第1页
02.大数阶乘——算法分析&程序设计_第2页
02.大数阶乘——算法分析&程序设计_第3页
02.大数阶乘——算法分析&程序设计_第4页
02.大数阶乘——算法分析&程序设计_第5页
资源描述:

《02.大数阶乘——算法分析&程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、大数阶乘——算法分析&程序设计算法设计方案一:链表Ax链表n=链表C链表A=链表C方案二:链表Axintn=链表B链表A=链表B方案三:链表Axintn=链表A乘法计算8803362X109!=83880080036286288003628cin>>nn>2把n装入链表An=n-1作为乘数A=A*nYN输出A删除链表程序结束结点:node数据域:node->data指针域:node->link头指针:first工作指针:pt进位变量:intcarry=0pt=firstpt->data=pt->data*n+carrycarry=pt->data/

2、1000pt->data=pt->data%1000pt->link!=0YNpt=pt->linkCarry!=0YNpt->link=newnodept->link->link=NULLpt=pt->linkpt->data=carry%1000carry=carry/1000880362ptpt0carry8388008003628628pt3cin>>nn>2把n装入链表An=n-1作为乘数A=A*nYN输出A删除链表程序结束结点:node数据域:node->data指针域:node->link头指针:first工作指针:pt进位变量:in

3、tcarry=0pt=firstcout<datapt->data<10YNpt=pt->linkpt->data<100YNcout<<‘00’cout<<‘0’cout<datapt->link!=0YN效率分析//乘法实现intcarry=0;do{ptA=ptAstart;do{carry=ptA->num*n+carry;ptA->num=carry%1000;carry=carry/1000;if(ptA->prior!=NULL)ptA=ptA->prior;elsebreak;}while(1);while(ca

4、rry){ptA->prior=newnode;ptA->prior->next=ptA;ptA->prior->prior=NULL;ptA=ptA->prior;ptAhead=ptA;ptA->num=carry%1000;carry=carry/1000;};ptA=ptAstart;n--;}while(n>2);效率分析carry=ptA->num*n+carry;moveax,dwordptr[ptA]movecx,dwordptr[eax]imulecx,dwordptr[n]addecx,dwordptr[carry]movdwo

5、rdptr[carry],ecxptA->num=carry%1000;moveax,dwordptr[carry]cdqmovecx,3E8hidiveax,ecxmoveax,dwordptr[ptA]movdwordptr[eax],edxcarry=carry/1000;moveax,dwordptr[carry]cdqmovecx,3E8hidiveax,ecxmovdwordptr[carry],eax__asm{movebx,ptA;movebx,[ebx];moveax,n;mulebx;movecx,carry;leaeax,[e

6、ax+ecx];movecx,1000;divecx;movcarry,eax;moveax,ptA;mov[eax],edx;}总结利用链表存储大数,适当增大结点位数可提高效率如果用单链表,需在输出前原地逆置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。