用C++实现大数的加减乘除.doc_第1页
用C++实现大数的加减乘除.doc_第2页
用C++实现大数的加减乘除.doc_第3页
用C++实现大数的加减乘除.doc_第4页
用C++实现大数的加减乘除.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大数的加法#include #include #include #include using namespace std;int main()map m;m0=0;m1=1;m2=2;m3=3;m4=4;m5=5;m6=6;m7=7;m8=8;m9=9;map mm;mm0=0;mm1=1;mm2=2;mm3=3;mm4=4;mm5=5;mm6=6;mm7=7;mm8=8;mm9=9;string sa,sb,st;int pa,pb,pc,t;int flag; while(cinsasb)flag=0;reverse(sa.begin(),sa.end();reverse(sb.begin(),sb.end();if(sa.size()sb.size()st=sa;sa=sb;sb=st;for(int j=0;j=sb.size() pb=0;else pb=msbj;pc=pa+pb+flag;if(pc=10)pc=pc-10;flag=1;elseflag=0;saj=mmpc;if(flag=1) sa+=1;reverse(sa.begin(),sa.end();coutsaendl;return 0;2、大数的减法#include #include #include #include using namespace std;int main()map m;m0=0;m1=1;m2=2;m3=3;m4=4;m5=5;m6=6;m7=7;m8=8;m9=9;map mm;mm0=0;mm1=1;mm2=2;mm3=3;mm4=4;mm5=5;mm6=6;mm7=7;mm8=8;mm9=9;string sa,sb,st;int pa,pb,pc,t;int flag;int kk;int n;while(cinn)for(int kk=0;kksasb;flag=0;reverse(sa.begin(),sa.end();reverse(sb.begin(),sb.end();for(int j=0;j=sb.size() pb=0;else pb=msbj;if(pa=pb)pc=pa-pb;flag=0;elsepc=pa+10-pb;flag=1;saj=mmpc;while(1)t=sa.length()-1;if(sat=0) sa.erase(t);else break;reverse(sa.begin(),sa.end();coutsaendl;return 0;3、大数的乘法#include #include using namespace std;unsigned int total400;unsigned int num1200;unsigned int num2200;int main() memset(total,0,sizeof(total); string str1,str2;int i; while(cinstr1str2) int len,index; len = str1.length(); index = 0; for (i=len-1;i=0;i-) num1index+ = str1i-0; len = str2.length(); index = 0; for (i=len-1;i=0;i-) num2index+ = str2i-0; for (i=0;istr1.length();i+) for (unsigned int j=0;jstr2.length();j+) totali+j += num1i*num2j; for (i=0;i=10) totali+1 += totali/10; totali %= 10; bool flag = false; for (i=399;i=0;i-) if (flag|totali) flag = true; couttotali; if (!flag) cout0; coutendl; return 0;4、大数的除法#include #include using namespace std;#define MAX 200int num1MAX+10;int num2MAX+10;unsigned int totalMAX+10;int Sub(int a,int b) if (b=a) if (a=b) return 0; else return -1; int i = 0; for (;ab;i+) b+; return i;int main() int n;int i; cinn; while(n-) memset(num1,0,sizeof(num1); memset(num2,0,sizeof(num2); memset(total,0,sizeof(total); string str1,str2; cinstr1str2; int len,index; len = str1.length(); index = 0; for (i=len-1;i=0;i-) num1index+ = str1i-0; len = str2.length(); index = 0; for (i=len-1;i=0;i-) num2index+ = str2i-0; if (str2.length()str1.length() cout0=0;i-) if (num1i) len1 = i+1; break; len = Sub(len1,len2); int index = 0; bool flag = false; for (i=len1-1;i=len;i-) if (num1inum2i-len) break; if (flag) len-; if (len=-1) break; while (+index) bool flag = false; for (i=len1-1;i=len;i-) if (num1inum2i-len) break; if (flag) index-; break; fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论