- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计实习第讲高精度计算
例题:ai2981大整数加法 (P159) 问题描述 求两个不超过200位的非负整数的和。 输入数据 有两行,每行是一个不超过200位的非负整数,没有多余的前导0。 输出要求 一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 输入样例 22222222222222222222 33333333333333333333 输出样例 55555555555555555555 例题:ai2952 循环数 问题描述 当一个N位的整数X满足下列条件时,称其为循环数:X与任意一个整数1≤Y ≤ N相乘时,都将产生一个X的“循环”。即:分别将这两个整数的第1位数字与最后1位数字连在一起,可以得到一个相同的数字循环;当然两个整数在该数字循环中的起始位置不同。例如,142857是一个循环数 142857 *1 = 142857 142857 *2 = 285714 142857 *3 = 428571 142857 *4 = 571428 142857 *5 = 714285 142857 *6 = 857142 输入 写一个程序判断一个整数是否是循环数。输入文件是一个整数序列,每个整数长度为2~60。注意:每个整数前面的零被看作是该整数的一部分,在计算N时要统计。例如“01”是一个2位的整数,而“1”是一个1位的整数。 输出 对每个输入整数,输出一行,说明该整数是否是循环数。 样例输入 142857 142856 142858 01 0588235294117647 样例输出 142857 is cyclic 142856 is not cyclic 142858 is not cyclic 01 is not cyclic 0588235294117647 is cycl 解题思路 高精度的乘法:整数可能达60位 X*1: Y0 = X; X*2: Y1 = Y0+X X*3: Y2 = Y1+X …… Yi是否是X的“循环”? 解题思路: Yi是否是X的“循环”? 穷举:N位整数,循环移位可以有N种可能 循环移位方法: Yi是否是“XX” 的子串? * * 程序设计实习第四讲 高精度计算 程序设计实习第四讲 高精度计算 新课程网址: /cpp2009/ 例题:ai2981大整数加法 (P159) 解题思路 1) 用字符型或整型数组来存放大整数 an[0]存放个位数,an[1]存放十位数,an[2]存放百位数…… 2)模拟小学生列竖式做加法,从个位开始逐位相加,超过或达到10则进位。 用unsigned an1[201]保存第一个数,用unsigned an2[200]表示第二个数,然后逐位相加,相加的结果直接存放在an1中。要注意处理进位。 #include stdio.h #include string.h #define MAX_LEN 201 int an1[MAX_LEN+10]; int an2[MAX_LEN+10]; char szLine1[MAX_LEN+10]; char szLine2[MAX_LEN+10]; int Add(int nMaxLen , int * an1, int * an2) //将长度最多为 nMaxLen 的大整数 an1和an2 相加,结果放在an1, //an1[0],an2[0]对应于个位 { int nHighestPos = 0; for(int i = 0;i nMaxLen; i ++ ) { an1[i] += an2[i]; //逐位相加 if( an1[i] = 10 ) { //看是否要进位 an1[i] -= 10; an1[i+1] ++; //进位 } if( an1[i] ) nHighestPos = i; //记录最高位的位置 } return nHighestPos; } int main() { scanf(%s, szLine1); scanf(%s, szLine2); int i, j; //库函数memeset将地址an1开始的sizeof(an1)字节内容置成0 //sizeof(an1)的值就是an1的长度 //memset函数在string.h中声明 memset( an1, 0, sizeof(an1)); memset( an2, 0, sizeof(an2)); //下面将szLine1中存储的字符串形式的整数转换到an1中去, //an1[0]对应于个位 int nLen1 = strlen( szLine1);
您可能关注的文档
最近下载
- DBJ∕T13-363-2021 福建省智慧杆建设技术标准.pdf VIP
- 2023年初级会计职称《经济法基础》精讲课件-第一章--总论.pptx VIP
- 科学教育出版社七年级上册劳动实践手册教案.docx VIP
- 建筑施工 - L17J104复合外模板现浇混凝土保温系统建筑构造(山东图集2018.1.1实施).pdf VIP
- 2023年初级会计职称《经济法基础》精讲课件--第二章-会计法律制度.pptx VIP
- 高中英语句子成分及简单句的五种基本句型课件(共47张PPT).ppt VIP
- 风管精品工程施工方案(3篇).docx VIP
- DLT 1572.3-2016 变电站和发电厂直流辅助电源系统短路电流 第3部分:算例.docx VIP
- 职业技术学院《三坐标智能测量技术》课程标准 机械制造及自动化专业.pdf VIP
- 《特种设备安全培训》精品课件(2024).pptx VIP
文档评论(0)