已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
这是一个大数相乘以及xy的实现的算法 实现方式:用字符数组实现#include#includeusing namespace std;/大数相乘void hugemulti(const char * a,const char * b)char *c = new charstrlen(a)+strlen(b)+1;cstrlen(a)+strlen(b) = 0;/char字符串的最后要有0字符结束,不然会出问题/数组的初始化(全部为0)for(int index = 0;index strlen(c);index+)cindex = 0;/用来标记最高位在C数组中的位置int mark = 0;/把两个数倒过来乘/* 比如说12345*789 = 5 4 3 2 1X 9 8 7 _ 5 0 1 1 1 1 0 6 7 8 9 5 1 4 6 8 _ 5 0 2 0 4 7 9所得到的结果也是反的*/for(int index = 0;index strlen(b);index+)for(int secdex = 0;secdex=0;index-)coutcindex;coutendl;/s释放内存delete c;c = NULL;/x的n次方,因为我们要改变数组a的值,所以要传入数组a的地址void xny(char * a, char * b)/数组c用来存储结果char *c = new charstrlen(*a)+strlen(b)+1;/在c字符串的最后加上0标志cstrlen(*a)+strlen(b) = 0;/数组的初始化for(int index = 0;index strlen(c);index+)cindex = 0;/用来标记最高位在C数组中的位置int mark = 0;for(int firdex = 0;firdex strlen(b);firdex+)for(int secdex = 0;secdexstrlen(*a);secdex+)/处理进位int temp = (bfirdex-0)*(*a)secdex-0);int m = cfirdex+secdex-0;int k =(m+temp%10);cfirdex+secdex = k%10+0;cfirdex+secdex+1 = (cfirdex+secdex+1-0)+temp/10+k/10)+0;/这里的mark跟hugemulti函数里面的mark同,因为每次c数组都是新的,而且里面都是0,所以只能通过temp的值来考虑进位if(temp/10) mark = firdex+secdex+1;elsemark = firdex+secdex;delete (*a);(*a) = NULL;/这里mark表示位置,所以length至少为mark+2*a = new char mark+2;(*a)mark+1 = 0;for(int i = 0;i =mark;i+)(*a)i = ci;delete c;c = NULL;int n = 100;/把字符串反转void reversal(char *str)if(strlen(str) = 0)return;for(int index = 0;index strlen(str)/2;index+)char temp = strindex;strindex = strstrlen(str)-index-1;strstrlen(str)-index-1=temp;int main(void)string number1,number2;int n;/获得两个大数char *a = NULL,*b = NULL;cout请输入两个大数:number1number2;a = new charnumber1.length()+1;b = new charnumber2.length()+1;anumber1.length() = 0;bnumber2.length() = 0;strcpy(a,number1.c_str();strcpy(b,number2.c_str();reversal(a);reversal(b);cout大数相乘的结果:endl;hugemulti(a,b);/为两个大数分配内存空间coutnumber1;coutn;delete a;a = NULL;delete b;b = NULL;a = new charnumber1.length()+1;b = new charnumber1.length()+1;anumber1.length() = 0;bnumber1.length() = 0;strcpy(a,number1.c_str();strcpy(b,number1.c_str();reversal(a);reversal(b);for(int i = 0;i n-1;i+)/循环n-1次就可以了xny(&a,b);reversal(a);coutnumber1的n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋建设工程合同反诉状
- 六安市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- (一模)信阳市2026届高三第一次教学质量检测 生物试卷(含答案详解)
- 保险专业代理合同(标准版)
- 2025北京市劳动合同书(适用于在京建筑施工企业外地农民工)
- 合肥市中医院患者隐私保护考核
- 钟表销售试题及答案
- 衢州市人民医院老年共病管理模式与决策考核
- 芜湖市中医院围手术期安全管理考核
- 总装工厂试题及答案
- 公路养护管理计划与执行报告
- 2025年城市地下综合管廊建设财务可持续性研究报告
- 6.2 学会依法办事 课件-2025-2026学年统编版道德与法治 八年级上册
- 2025江西南昌市青山湖区招聘社区工作者(专职网格员)45人考前自测高频考点模拟试题及参考答案详解一套
- 小学数学课标考试真题及答案
- 2025年银行招聘各银行笔试真题(附答案)
- (初级)小红书种草营销师认证考试真题试题(附答案)
- 预包装食品安全管理制度
- 基础生命体征解读
- T/CCSAS 025-2023化工企业作业安全分析(JSA)实施指南
- MOOC 旅游学概论-中国地质大学(武汉) 中国大学慕课答案
评论
0/150
提交评论