- 57
- 0
- 约1.74千字
- 约 19页
- 2016-03-17 发布于湖北
- 举报
高精度运算 一、加法 * 一、模拟两个数的算术预算? 加多少次呢? 98567 +658 * 一、转换 * 1、数字的读入,一般是以“字符串”的形式进行读入,与我们刚才模拟的两个数相加,有什么不同,出现什么问题,请大家思考。 怎么解决这个问题。 将字符串进行倒序处理,倒序存入一个整型或长整型数组中。 * 读入、转换与存放——字符串转换为数字数组存放,顺序读入,倒序存放,利于计算的时候低位对齐,由低位到高位计算; a[len-i+1]:=ord(s[i])-ord(‘0’); * 二、运算 * 由低位向高位,逐位相加 逐位相加会产生什么问题?——进位 * 计算——逐位运算,运算规则:倒序存放保证了对位相加,运算规则本位加进位; for i:=1 to len do begin c[i]:=+a[i]+b[i]+jw; jw:=c[i] div 10; c[i]:=c[i] mod 10; end; 请问,jw在进行第一次相加之前,有没有确定的值? * 最后一次相加后,jw不等于0,又该怎么办呢? if jw0 then begin inc(len); c[len]:=jw mod 10; jw:=jw div 10; end; * 三、输出 * 加完和进位之后,就要将结果输出。 之前我们的所有操作都是倒序的,现在我们要将结果再次倒序,才能正确输出正序的结果。 * 请将高精度加法用过程模块化 procedure add(a,b:arr;var c:arr); 其中a[0],b[0],c[0]用来表示各个数组的长度。 * 二、乘法 高精度乘单精度 * 1、高精度乘单精度类似高精度加法,逐位相乘,注意进位; for i:=1 to len do begin c[i]:=c[i]+a[i]*k; c[i+1]:=c[i+1]+c[i] div 10; c[i]:=c[i] mod 10; end; * 2、注意最高位进位; while c[len+1] 0 do begin inc(len); c[len+1]:=c[len] div 10; c[len]:=c[len] mod 10; end; c[0]:=len; * 请将高精度乘单精度用过程模块化 procedure mul(a:arr;k:longint;var c:arr); 其中a[0], c[0]用来表示各个数组的长度。 * 习题1,阶乘 问题描述:计算N的阶乘 输入格式:输入文件中只有一个整数N 输出格式:要求输出一个整数,表示N的阶乘 输入样例:5 输出样例:120 数据规模与约定:100%的数据中,0 ≤ N ≤ 50 习题2,阶乘和 问题描述:用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1。 输入正整数N,输出计算结果S。 输入格式:输入文件中只有一个整数N 输出格式:要求输出一串数字,表示N的阶乘和 输入样例:5 输出样例:153 数据规模与约定:100%的数据中,0 ≤ N ≤ 50 * 5、义务植树(tree) 习题3 、植树 【问题描述】植树,按一张图纸(如图1),并说明要求:所有同学植的树要成一个等腰三角形,等腰三角形的两条腰上按顺序都是植1棵树,其他位置植树棵数等于它的左上角和右上角所植树的和。一定不能弄错,要分工协作,把这次植树活动做好。小明负责本小组植树棵数的计算,例如第i行第j个位置应植多少棵树。你能帮助小明完成计算任务吗? 【输入格式】输入文件只有1行:i和j两个数(1=i,j=101,j=i),中间隔一个空格,表示植树位置为第i行第j个位置(从左往右数第j个)。 【输出格式】输出只有一个数:所求位置上应植数的棵数。 【输入输出样例】 样例1 样例2 Tree.in 3 2 5 3 Tree.out 2 6 *
您可能关注的文档
最近下载
- 重症肺结核诊断和治疗专家共识.pptx VIP
- 某某市税务局“岗位大练兵 业务大比武”活动实施方案范本.doc VIP
- T∕CSAE 91-2018 汽车生命周期温室气体及大气污染物排放评价方法.pdf
- 个人独资企业章程.pdf VIP
- 2026年中小学寒假安全教育主题班会课件PPT.pptx VIP
- 5 《火灾自动报警系统施工及验收规范》(GB50166--92)附表.pdf VIP
- 光伏电站并网启动调试方案.pdf VIP
- pNC系统载体使用说明.PDF
- 小学篮球兴趣小组教学计划范文(32篇).docx VIP
- 山东省临沂市罗庄区2024-2025学年七年级上学期期末考试地理试题.pdf VIP
原创力文档

文档评论(0)