西北工业大学计算方法第四周作业答案第四章作业答案
- 格式:pdf
- 大小:109.73 KB
- 文档页数:3
参考答案 第一章1 *1x =1.7; *2x =1.73; *3x =1.732 。
2.3. (1) ≤++)(*3*2*1x x x e r 0.00050; (注意:应该用相对误差的定义去求) (2) ≤)(*3*2*1x x x e r 0.50517; (3) ≤)/(*4*2x x e r 0.50002。
4.设6有n 位有效数字,由6≈2.4494……,知6的第一位有效数字1a =2。
令3)1()1(1*1021102211021)(-----⨯≤⨯⨯=⨯=n n r a x ε 可求得满足上述不等式的最小正整数n =4,即至少取四位有效数字,故满足精度要求可取6≈2.449。
5. 答:(1)*x (0>x )的相对误差约是*x 的相对误差的1/2倍;(2)nx )(* 的相对误差约是*x 的相对误差的n 倍。
6. 根据********************sin 21)(cos 21sin 21)(sin 21sin 21)(sin 21)(c b a c e c b a c b a b e c a c b a a e c b S e r ++≤=******)()()(tgcc e b b e a a e ++ 注意当20*π<<c 时,0**>>c tgc ,即1*1*)()(--<c tgc 。
则有)()()()(****c e b e a e S e r r r r ++<7.设20=y ,41.1*0=y ,δ=⨯≤--2*001021y y 由 δ1*001*111010--≤-=-y y y y ,δ2*111*221010--≤-=-y y y yMδ10*991*10101010--≤-=-y y y y即当0y 有初始误差δ时,10y 的绝对误差的绝对值将减小1010-倍。
而11010<<-δ,故计算过程稳定。
答案第一章:光纤通信1、什么是光纤通信?光纤通信及系统的组成光纤通信使用光导纤维作为传输光波信号的通信方式。
光纤通信系统通常由电发射机、光发射机、光接收机、电接收机和由光纤构成的光缆等组成。
2、什么事光通信光通信就是以光波为载波的通信。
3、光纤通信的优点?①传输频带宽,通信容量大。
②传输衰减小,传输距离长。
③抗电磁干扰,传输质量好。
④体积小、重量轻、便于施工。
⑤原材料丰富,节约有色金属,有利于环保4、光纤通信的工作波长?光源:近红外区波长:0.8—1.8μm频率:167—375THz5、WDM是指什么?DWDM指什么?WDM:波分复用DWDM:密集波分复用6、光纤从材料上可以分为哪几种?从材料上分为石英光纤、多组份玻璃光纤、氟化物光纤、塑料光纤等7、光纤活动连接器从连接方式来看分为哪几种?常见的插针端面有哪几种?PC、APC、SPC(球面、斜面、超级抛光端面呈球面的物理接触)8、按缆芯结构分,光缆分为哪几种?层绞式、单位式、骨架式、带状式9、光线的制造分哪几个步骤?I 材料准备与提纯II 制棒III 拉丝、涂覆IV 塑套其中制棒分为:(1)MCVD改进的化学气相沉淀法(2)PCVD等离子化学气相沉淀法10、按材料光纤分几种?同611、无源器件的种类连接器、分路器与耦合器、衰减器、隔离器、滤波器、波分复用器、光开关和调制器等第二章:光纤通信的物理学基础1、通过哪些现象可以证明光具有波动性?光的波动性可以从光的干涉、光的衍射和光的偏振等现象证明2、什么叫光电效应?光电效应具有哪些试验规律?由于光的照射使电子从金属中溢出的现象称为光电效应⑴ 每种金属都有一个确定的截止频率γ0,当入射光的频率低于γ0 时,不论入射光多强,照射时间多长,都不能从金属中释放出电子。
⑵ 对于频率高于γ0的入射光,从金属中释放出的电子的最大动能与入射光的强度无关,只与光的频率有关。
频率越高释放出的电子的动能就越大。
⑶ 对于频率高于γ0的入射光,即使入射光非常微弱,照射后也能立即释放出电子。
1.1 设3.14, 3.1415, 3.1416分别作为π的近似值时所具有的有效数字位数解 近似值x =3.14=0.314×101,即m =1,它的绝对误差是 -0.001 592 6…,有31105.06592001.0-*⨯≤=- x x .即n =3,故x =3.14有3位有效数字. x =3.14准确到小数点后第2位.又近似值x =3.1416,它的绝对误差是0.0000074…,有5-1*10⨯50≤00000740=-.. x x 即m =1,n =5,x =3.1416有5位有效数字.而近似值x =3.1415,它的绝对误差是0.0000926…,有4-1*10⨯50≤00009260=-.. x x即m =1,n =4,x =3.1415有4位有效数字.这就是说某数有s 位数,若末位数字是四舍五入得到的,那么该数有s 位有效数字 1.2 指出下列各数具有几位有效数字,及其绝对误差限和相对误差限: 2.0004 -0.00200 9000 9000.00解 (1)∵ 2.0004=0.20004×101, m=1绝对误差限:4105.0000049.020004.0-*⨯≤≤-=-x x x m -n =-4,m =1则n =5,故x =2.0004有5位有效数字1x =2,相对误差限000025.010221102151)1(1=⨯⨯=⨯⨯=---n r x ε(2)∵ -0.00200= -0.2×10-2, m =-25105.00000049.0)00200.0(-*⨯≤≤--=-x x xm -n =-5, m =-2则n =3,故x =-0.00200有3位有效数字1x =2,相对误差限3110221-⨯⨯=r ε=0.0025 (3) ∵ 9000=0.9000×104, m =4,0105.049.09000⨯<≤-=-*x x xm -n =0, m =4则n =4,故x =9000有4位有效数字4110921-⨯⨯=r ε=0.000056 (4) ∵9000.00=0.900000×104, m =4,2105.00049.000.9000-*⨯<≤-=-x x xm -n =-2, m =4则n =6,故x =9000.00有6位有效数字 相对误差限为6110921-⨯⨯=rε=0.000 00056由(3)与(4)可以看到小数点之后的0,不是可有可无的,它是有实际意义的.1.3 ln2=0.69314718…,精确到310-的近似值是多少?解 精确到310-=0.001,即绝对误差限是ε=0.0005,故至少要保留小数点后三位才可以.ln2≈0.6932.1 用二分法求方程013=--x x在[1, 2]的近似根,要求误差不超过31021-⨯至少要二分多少?解:给定误差限ε=0.5×10-3,使用二分法时,误差限为)(211*a b x x k k -≤-+ 只要取k 满足ε<-+)(211a b k 即可,亦即 96678.912lg 10lg 35.0lg 12lg lg )lg(=-+-=---≥εa b k只要取n =10.2.3 证明方程1 -x –sin x =0 在区间[0, 1]内有一个根,使用二分法求误差不超过0.5×10-4的根要二分多少次? 证明 令f (x )=1-x -sin x , ∵ f (0)=1>0,f (1)=-sin1<0∴ f (x )=1-x -sin x =0在[0,1]有根.又 f '(x )=-1-c os x<0 (x ∈[0.1]),故f (x ) 在[0,1]单调减少,所以f (x ) 在区间[0,1]内有唯一实根.给定误差限ε=0.5×10-4,使用二分法时,误差限为)(211*a b x x k k -≤-+ 只要取k 满足ε<-+)(211a b k 即可,亦即7287.1312lg 10lg 45.0lg 12lg lg )lg(=-+-=---≥εa b k只要取n =14.2.4 方程0123=--x x 在x =1.5附近有根,把方程写成四种不同的等价形式,并建立相应的迭代公式:(1)211xx +=,迭代公式2111kk x x +=+ (2)231x x +=,迭代公式3211k k x x +=+ (3)112-=x x,迭代公式111-=+k k x x (4)13-=x x ,迭代公式131-=+k k x x试分析每种迭代公式的收敛性,并选取一种收敛迭代公式求出具有四位有效数字的近似根。
《计算方法》习题答案第一章 数值计算中的误差1.什么是计算方法?(狭义解释)答:计算方法就是将所求的的数学问题简化为一系列的算术运算和逻辑运算,以便在计算机上编程上机,求出问题的数值解,并对算法的收敛性、稳定性和误差进行分析、计算。
2.一个实际问题利用计算机解决所采取的五个步骤是什么?答:一个实际问题当利用计算机来解决时,应采取以下五个步骤: 实际问题→建立数学模型→构造数值算法→编程上机→获得近似结果 4.利用秦九韶算法计算多项式4)(53-+-=x x x x P 在3-=x 处的值,并编程获得解。
解:400)(2345-+⋅+-⋅+=x x x x x x P ,从而所以,多项式4)(53-+-=x x x x P 在3-=x 处的值223)3(-=-P 。
5.叙述误差的种类及来源。
答:误差的种类及来源有如下四个方面:(1)模型误差:数学模型是对实际问题进行抽象,忽略一些次要因素简化得到的,它是原始问题的近似,即使数学模型能求出准确解,也与实际问题的真解不同,我们把数学模型与实际问题之间存在的误差称为模型误差。
(2)观测误差:在建模和具体运算过程中所用的一些原始数据往往都是通过观测、实验得来的,由于仪器的精密性,实验手段的局限性,周围环境的变化以及人们的工作态度和能力等因素,而使数据必然带有误差,这种误差称为观测误差。
(3)截断误差:理论上的精确值往往要求用无限次的运算才能得到,而实际运算时只能用有限次运算的结果来近似,这样引起的误差称为截断误差(或方法误差)。
(4)舍入误差:在数值计算过程中还会用到一些无穷小数,而计算机受机器字长的限制,它所能表示的数据只能是一定的有限数位,需要把数据按四舍五入成一定位数的近似的有理数来代替。
这样引起的误差称为舍入误差。
6.掌握绝对误差(限)和相对误差(限)的定义公式。
答:设*x 是某个量的精确值,x 是其近似值,则称差x x e -=*为近似值x 的绝对误差(简称误差)。
一、考试内容线性方程组和非线性方程(组)的求解、矩阵特征值和特征向量的计算、微积分的计算、微分方程定解问题的求解等,都是工程、科技、统计等实际问题中大量碰到的数学问题,这些问题的精确解很难求出。
而《计算方法》则是一门适合于计算机计算求解的数值方法,它简单可行,能有效求出上述数学问题的近似解。
通过本课程的学习,要求学生能掌握利用计算机求解基本数学问题常用的数值计算方法,学会构造基本的计算格式,并能作一定的误差分析,使学生具备基本的科学计算能力。
主要有:1.了解计算方法的认务和特点;2.熟练掌握方程的的近似解法,包括二分法、迭代法、牛顿迭代法和弦割法3.熟练掌握线性代数方程组的解法,直接解法中的高斯消去法、矩阵的直接三角分解法,平方根分解法,解三对角方程组的追赶法;解线性方程组的迭代法,简单迭代法,雅可比迭代法,赛德尔迭代法,SOR方法及其收敛性4.熟练掌握矩特征值和特征向量的计算,乘幂法与反幂法,古典雅可比方法,雅可比过关法5.熟练掌握插值法,拉格朗日插值法,牛顿插值法,等距节点插值法,埃尔米特插值法,三次样条插值法6.熟练掌握最小二乘法与曲线拟合,掌握矛盾方程组与最小二乘法,数据的多项式拟合,可化为线性拟合模型的曲线拟合7.熟练掌握数值积分与数值微分,包括牛顿-柯特斯求积公式、复化求积公式、龙贝格求积算法、高斯型求积公式和数值微分;8. 熟练掌握常微分方程初值问题数值解法,包括欧拉法与梯形法、泰勒展开法与龙格-库塔法、线性多步法2006-2007第一学期一. 填空1) 近似数253.1*=x 关于真值249.1=x 有____位有效数字;2) 设有插值公式)()(111k nk k x f A dx x f ⎰∑-=≈,则∑=nk kA1=______;(只算系数)3) 设近似数0235.0*1=x ,5160.2*2=x 都是有效数,则相对误差≤)(*2*1x x e r ____; 4) 求方程x x cos =的根的牛顿迭代格式为______;5) 矛盾方程组⎪⎩⎪⎨⎧-=+=-=+1211212121x x x x x x 与⎪⎩⎪⎨⎧-=+=-=+121222212121x x x x x x 得最小二乘解是否相同______。
西工大20年10月机考计算方法作业试卷总分:100 得分:96要答an:网叫福到(这四个字的拼音)一、单选题 (共 30 道试题,共 60 分)1.舍入误差是( )产生的误差。
A.只取有限位数B.模型准确值与用数值方法求得的准确值C.观察与测量D.数学模型准确值与实际值正确答案:2. {A.2B.3C.4D.5正确答案:3.用 1+x近似表示ex所产生的误差是( )误差。
A.模型B.观测C.截断D.舍入正确答案:4.解线性方程组的主元素消去法中选择主元的目的是( )。
A.控制舍入误差B.减小方法误差C.防止计算时溢出D.简化计算正确答案:5.舍入误差是(?? ?)产生的误差。
A.只取有限位数B.模型准确值与用数值方法求得的准确值C.观察与测量D.数学模型准确值与实际值正确答案:6. {A.{<img ">B.{<img g">C.0D.1正确答案:7.( )是解方程组Ax=b的迭代格式x(k+1)=Mx(k)+f收敛的一个充分条件;A.{<img ">B.{<img ">C.{<img ">D.{<img >正确答案:8.-324.7500是舍入得到的近似值,它有( )位有效数字。
A.5B.6C.7D.8正确答案:9. {A.舍入B.观测C.模型D.截断正确答案:10. {A.-1B.1C.{<img ">D.0正确答案:11. {A.{<img ">B.{<img >C.{<img >D.0正确答案:12. {A.1B.2C.4D.3正确答案:13. {A.A的各阶顺序主子式不为零B.{<img ">C.{<img ">D.{<img pg">正确答案:14. {A.0B.1C.2D.{<img ">正确答案:15. {A.0B.{<img ">C.2D.1正确答案:16. {A.0B.1C.{<img s>D.{<img s>正确答案:17. 三点的高斯型求积公式的代数精度为()。
(五)课后习题4.1 对于积分⎰-aadx x f )(,以a x x a x ==-=210,0,为节点,构造形如⎰-++≈aax f A x f A x f A dx x f )()()()(221100的插值型求积公式,并讨论所得公式的代数精度。
解答:⎰⎰--=------=----=aa a a a dx a a a a x x dx x x x x x x x x A 31))(0())(0())(())((2010210⎰⎰--=-+-+=----=aa a a a dx a a a x a x dx x x x x x x x x A 34)0)(0())(())(())((2101201⎰⎰--=-+-+=----=aa a a a dx a a a x a x dx x x x x x x x x A 31)0)(()0)(())(())((1202102易知为Simpson 公式,因此代数精度为34.2 确定 下列求积公式中的待定参数,使其代数精度尽量高,并指出所得公式的代数精度。
(1)⎰++≈2210)2()1()0()(f A f A f A dx x f(2)⎰-⋅++≈hh f f h h f f hdx x f 0''2)]()0([)]()0([2)(α解答:(1)令2,,1)(x x x f =,假定求积公式均准确成立,从而有: ⎰++==202102A A A dx 21022102⋅+⋅+⋅==⎰A A A xdx22212022210038⋅+⋅+⋅⋅==⎰A A A dx x 解以上三元线性方程组从得:34,31120===A A A ,显然仍为Simpson 公式,因此代数精度为3(2)求积公式中只含一个待定参数α,当x x f ,1)(=时,有 ⎰++=hh dx 00]11[2,⎰-++=h h h hxdx 02)11(]0[2α故令2)(x x f =时求积公式准确成立,即⎰-⨯++=hh h h h dx x 0222]202[]0[2α,解得121=α将3)(x x f =代入上述确定的求积公式,有:⎰-++=hh h h h dx x 02233]30[12]0[2,这说明求积公式至少有3次代数精度,再令 4)(x x f =,代入求积公式时有:⎰-++≠hh h h h dx x 03244]40[12]0[2故所建求积公式为⎰-++≈hh f f h h f f h dx x f 0''2)]()0([2)]()0([2)(4.3 对于xxx f sin )(=,利用下表数据,计算8,4=n 时的复合梯形公式84,T T ,以及4=n 复合Simpson 公式4S 的值。
西北工业大学POJ答案绝对是史上最全版(不止100题哦……按首字母排序)1.“1“的传奇2.A+B3.A+BⅡ4.AB5.ACKERMAN6.Arithmetic Progressions7.Bee8.Checksum algorithm9.Coin Test10.Dexter need help11.Double12.Easy problem13.Favorite number14.Graveyard15.Hailstone16.Hanoi Ⅱ17.Houseboat18.Music Composer19.Redistribute wealth20.Road trip21.Scoring22.Specialized Numbers23.Sticks24.Sum of Consecutive25.Symmetric Sort26.The Clock27.The Ratio of gainers to losers28.VOL大学乒乓球比赛29.毕业设计论文打印30.边沿与内芯的差31.不会吧,又是A+B32.不屈的小蜗33.操场训练34.插入链表节点35.插入排序36.插入字符37.成绩表计算38.成绩转换39.出租车费40.除法41.创建与遍历职工链表42.大数乘法43.大数除法44.大数加法45.单词频次46.迭代求根47.多项式的猜想48.二分查找49.二分求根50.发工资的日子51.方差52.分离单词53.分数拆分54.分数化小数55.分数加减法56.复数57.高低交换58.公园喷水器59.韩信点兵60.行程编码压缩算法61.合并字符串62.猴子分桃63.火车站64.获取指定二进制位65.积分计算66.级数和67.计算A+B68.计算PI69.计算π70.计算成绩71.计算完全数72.检测位图长宽73.检查图像文件格式74.奖金发放75.阶乘合计76.解不等式77.精确幂乘78.恐怖水母79.快速排序80.粒子裂变81.链表动态增长或缩短82.链表节点删除83.两个整数之间所有的素数84.路痴85.冒泡排序86.你会存钱吗87.逆序整数88.排列89.排列分析90.平均值函数91.奇特的分数数列92.求建筑高度93.区间内素数94.三点顺序95.山迪的麻烦96.删除字符97.是该年的第几天98.是该年的第几天?99.数据加密100.搜索字符101.所有素数102.探索合数世纪103.特殊要求的字符串104.特殊整数105.完全数106.王的对抗107.危险的组合108.文件比较109.文章统计110.五猴分桃111.小型数据库112.幸运儿113.幸运数字”7“114.选择排序115.寻找规律116.循环移位117.延伸的卡片118.羊羊聚会119.一维数组”赋值“120.一维数组”加法“121.勇闯天涯122.右上角123.右下角124.圆及圆球等的相关计算125.圆及圆球等相关计算126.程序员添加行号127.找出数字128.找幸运数129.找最大数130.整数位数131.重组字符串132.子序列的和133.子字符串替换134.自然数立方的乐趣135.字符串比较136.字符串复制137.字符串加密编码138.字符串逆序139.字符串排序140.字符串替换141.字符串左中右142.组合数143.最次方数144.最大乘积145.最大整数146.最小整数147.最长回文子串148.左上角149.左下角1.“1“的传奇#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int n,i,j,k=0,x=1,y,z,m,p,q,a,s=0;scanf("%d",&n);m=n;for(i=1;i<12;i++){m=m/10;k++;if(m==0)break;}q=n;k=k-1;for(a=1;a<=k;a++){x=x*10;}y=q%x;z=q/x;p=q-y;if(z>=2)s=s+x+z*k*(x/10); elses=s+z*k*(x/10);for(j=p;j<=n;j++) {m=j;for(i=1;i<12;i++){x=m%10;if(x==1)s++;m=m/10;if(m==0)break;}}printf("%d",s);return 0;}2.A+B#include <stdio.h>int doubi(int n,int m){n=n+m;n=n%100;return n;}int main(){int t,i,a[100],n,m;scanf("%d",&t);for (i=0;i<=(t-1);i++){scanf("%d%d",&n,&m);a[i]=doubi(n,m);}for (i=0;i<=(t-1);i++)printf("%d\n",a[i]);return 0;}3.A+BⅡ#include <stdio.h>int main(){int A,B,sum;scanf("%d%d",&A,&B);sum=A+B;printf("%d\n",sum);return 0;}4.AB#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char s[100],q[100];double a,b,c;int n=0,i;scanf("%lf%lf",&a,&b);c=a*b;sprintf(s,"%.0lf",c);for(i=0;i<strlen(s);i++){n=n+s[i]-48;}while(n>=10){sprintf(q,"%d",n);n=0;for(i=0;i<strlen(q);i++)n=n+q[i]-48;}printf("%d",n);return 0;}5.ACKERMAN#include <stdio.h>#include <stdlib.h>int ack(int x,int y){int n;if (x==0) {n=y+1;return n;}else if (y==0) n=ack(x-1,1);else n=ack(x-1,ack(x,y-1));return n;}int main(){int m,b;scanf("%d%d",&m,&b);m=ack(m,b);printf("%d",m);return 0;}6.Arithmetic Progressions#include <stdio.h>#include <math.h>int g(int n){int i;if(n==1) return 0;if(n==2) return 1;if(n==3) return 1;for(i=2;i<=sqrt(n);i++) if(n%i==0) return 0;return 1;}int f(int a,int b,int c){int i=0,s=a-b;if(c==1&&g(a)==1) return a;if(b==0&&g(a)!=1) return -1;while(1){s=s+b;if(g(s)) i++;if(i>=c) break;}return s;int main(){int a,b,c,d[100],i=0,n;while(1){scanf("%d%d%d",&a,&b,&c);if(a==0&&b==0&&c==0) break;d[i]=f(a,b,c);i++;}n=i;for(i=0;i<n;i++)printf("%d\n",d[i]);return 0;}7.Bee#include <stdio.h>#include <stdlib.h>int main()int A[100],i=0,j,k,female=0,male=1,x;for(;;i++){scanf("%d",&A[i]);if(A[i]==-1)break;}for(j=0;j<i;j++){female=0,male=1;for(k=1;k<A[j];k++){x=female;female=male;male=x+male+1;}printf("%d %d\n",male,female+male+1);}return 0;}8.Checksum algorithm #include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int i,n,t,j;char s[100][100];for(i=0;;i++){gets(s[i]);if(s[i][0]=='#') break;}n=i;for(i=0;i<n;i++){t=0;for(j=0;j<strlen(s[i]);j++)if(s[i][j]==32) t=t;else t=t+(j+1)*(s[i][j]-64);printf("%d\n",t);}return 0;}9.Coin Test#include <stdio.h>#include <stdlib.h>int main(){char A[100000];int n,i=0,a=0,b=0,j;double x;while(1){scanf("%c",&A[i]);if(A[i]=='\n')break;i++;}for(j=0;j<i;j++){if(A[j]=='S'){printf("WA");goto OH;}if(A[j]=='U')a++;if(A[j]=='D')b++;}x=a*1.0/(a+b)*1.0;if(x-0.5>0.003||x-0.5<-0.003) printf("Fail");elseprintf("%d/%d",a,a+b);OH:return 0;}10.Dexter need help#include <stdio.h>int fun(int a){if(a==1) return 1;elsereturn fun(a/2)+1;}int main(){int a,b[100],i=0,j; while(1){scanf("%d",&a);if(a==0)break;b[i]=fun(a);i++;}for(j=0;j<i;j++){printf("%d\n",b[j]); }return 0;}11.Double#include <stdio.h>#include <stdlib.h>int main(){int a[100],b[100],i,j,n,t=0;for(i=0;;i++){scanf("%d",&a[i]);if(a[i]==0) break;}n=i;for(i=0;i<n;i++)b[i]=2*a[i];for(i=0;i<n;i++)for(j=0;j<n;j++)if(a[i]==b[j]) t++;printf("%d",t);return 0;}12.Easy problem#include <stdio.h>#include <math.h>int main(){int N,i,n,j=0;scanf("%d",&N);for(i=2;i<N+1;i++){if((N+1)%i==0)j++;}printf("%d",j/2);return 0;}13.Favorite number #include <stdio.h>#include <string.h>#define MAXNUM 100000int prime_number = 0;int prime_list[MAXNUM]; bool is_prime[MAXNUM]; int ans[MAXNUM + 2];int dp[MAXNUM + 2];void set_prime() {int i, j;memset(is_prime, 0, sizeof(is_prime));for (i = 2; i < MAXNUM; i++) {if (is_prime[i] == 0) {prime_list[prime_number++] = i;if (i >= MAXNUM / i) continue;for (j = i * i; j < MAXNUM; j+=i) {is_prime[j] = 1;}}}}int main() {int i, j, k,o=0,d[100];memset(dp, -1, sizeof(dp));set_prime();ans[0] = 0;dp[1] = 0;for (i = 1; i <= MAXNUM; i++) {ans[i] = ans[i - 1] + dp[i];if (dp[i + 1] == -1 || dp[i + 1] > dp[i] + 1) { dp[i + 1] = dp[i] + 1;}for (j = 0; j < prime_number; j++) {if (i > MAXNUM / prime_list[j]) break;k = i * prime_list[j];if (dp[k] == -1 || dp[k] > dp[i] + 1) {dp[k] = dp[i] + 1;}}}while (scanf("%d%d", &i, &j) == 2 && (i || j)) { d[o]=ans[j] - ans[i - 1];o++;}for(i=0;i<o;i++)printf("%d\n",d[i]);}14.Graveyard#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int a[100],b[100],n,i,j;double s,p,l,t;for(i=0;;i++){scanf("%d%d",&a[i],&b[i]);if(a[i]==0&&b[i]==0) break;}n=i;for(i=0;i<n;i++){p=10000;if(b[i]%a[i]==0){printf("0.0000\n");continue;};t=10000/((double)a[i]);for(j=1;j<a[i]+b[i];j++){l=10000/((double)(a[i]+b[i]));l=t-j*l;l=fabs(l);if(l<p) p=l;}s=(a[i]-1)*p;printf("%.4lf\n",s);}return 0;}15.Hailstone#include <stdio.h>#include <stdlib.h>#include <string.h>int f(int n){int s=1;while(1){if(n==1) return s;else if(n%2==0) n=n/2,s++;else n=3*n+1,s++;}}int main()int n,m,i,j=0,t;scanf("%d%d",&m,&n);printf("%d %d",m,n);if(m>n) t=m,m=n,n=t;for(i=m;i<=n;i++)if(f(i)>j) j=f(i);printf(" %d",j);return 0;}16.Hanoi Ⅱ#include <stdio.h>#include <stdlib.h>#define M 70int start[M], targe[M];long long f(int *p, int k, int fina){if(k==0) return 0;if(p[k]==fina) return f(p,k-1,fina); return f(p,k-1,6-fina-p[k])+(1LL<<(k-1));int main (){long long ans;int n;while(scanf("%d",&n),n){int i;for(i=1;i<=n;i++) scanf("%d",&start[i]);for(i=1;i<=n;i++) scanf("%d",&targe[i]);int c=n;for(;c>=1&&start[c]==targe[c];c--);if(c==0){printf("0\n"); continue;}int other=6-start[c]-targe[c];ans=f(start,c-1,other)+f(targe,c-1,other)+1;printf("%lld\n",ans);}return 0;}17.Houseboat#include <stdio.h>#include <stdlib.h>#include <math.h>#define pi 3.1415926int f(float x,float y){int i;for(i=0;;i++)if(50*i>sqrt(x*x+y*y)*sqrt(x*x+y*y)*pi/2) break;return i;}int main(){int n,i,a[100];float x,y;scanf("%d",&n);for(i=0;i<n;i++){scanf("%f%f",&x,&y);a[i]=f(x,y);}for(i=0;i<n;i++)printf("%d %d\n",i+1,a[i]);return 0;}18.Music Composer19.Redistribute wealth#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int a[1000],b[1000],n,i,j,s,sum,t,m,mid,c[100],k=0;while(1){scanf("%d",&n);if(n==0) break;{s=0;for(i=1;i<=n;i++){scanf("%d",&a[i]);s=s+a[i];}m=s/n;b[1]=a[1]-m;b[0]=0;for(i=2;i<n;++i)b[i]=b[i-1]+a[i]-m;for(i=0;i<n;i++)for(j=0;j<n-1-i;j++)if(b[j]>b[j+1])t=b[j],b[j]=b[j+1],b[j+1]=t;mid=b[n/2];sum=0;for(i=0;i<=n-1;++i) sum=sum+fabs(mid-b[i]);c[k]=sum;k++;}}for(i=0;i<k;i++) printf("%d\n",c[i]);return 0;}20.Road trip#include <stdio.h>#include <stdlib.h>#include <math.h>int f(int n){int a[100],b[100],i,s;for(i=0;i<n;i++)scanf("%d%d",&a[i],&b[i]);s=a[0]*b[0];for(i=1;i<n;i++)s=s+a[i]*(b[i]-b[i-1]);return s;}int main(){int n,c[100],i=0;while(1){scanf("%d",&n);if(n==-1) break;c[i]=f(n);i++;}n=i;for(i=0;i<n;i++)printf("%d\n",c[i]);return 0;}21.Scoring#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int i,j,sum,min,c,count,n,a,b;char s1[50],s2[50];scanf("%d",&n);for(i=0;i<n;i++){count=sum=0;scanf("%s",s2);for(j=0;j<4;j++){scanf("%d%d",&a,&b);if(b!=0){sum+=(a-1)*20+b;count++;}}if(i==0){c=count,min=sum;strcpy(s1,s2);}else if(count>c||(count==c&&sum<min)){min=sum;c=count;strcpy(s1,s2);}}printf("%s %d %d\n",s1,c,min);return 0;}22.Specialized Numbers#include <stdio.h>#include <stdlib.h>int main(){int i,n,sum10,sum12,sum16;for(i=2992;i<3000;i++){n=i;sum10=0;while(n){sum10+=n%10;n/=10;}n=i;sum12=0;while(n){sum12+=n%12;n/=12;}n=i;sum16=0;while(n){sum16+=n%16;n/=16;}if(sum10==sum12&&sum12==sum16) printf("%d\n",i);}return 0;}23.Sticks#include <stdio.h>#include <string.h>#include <stdlib.h>int len[64], n, minlen, get;bool b[64];int cmp(const void *a, const void *b){return *(int *)a < *(int *)b ? 1 : -1;}bool dfs(int nowlen, int nowget, int cnt){if(cnt >= n) return false;if(get == nowget) return true;int i;bool f = false;if(nowlen == 0) f = true;for(i = cnt; i < n; i++){if(!b[i]){if(len[i] + nowlen == minlen){b[i] = true;if(dfs(0, nowget+1, nowget))return true;b[i] = false;return false;}else if(len[i] + nowlen < minlen){b[i] = true;if(dfs(nowlen+len[i], nowget, i+1))return true;b[i] = false;if(f) return false;while(i + 1 < n && len[i] == len[i+1]) i++;}}}return false;}int main(){int i, tollen;while(scanf("%d", &n), n){tollen = 0;int j = 0, p;for(i = 0; i < n; i++){scanf("%d", &p);if(p <= 50){len[j] = p;tollen += len[j];j++;}}n = j;if(n == 0){printf("0\n");continue;}qsort(len, n, sizeof(int), cmp);for(minlen = len[0]; ; minlen++) {if(tollen % minlen) continue;memset(b, 0, sizeof(b));get = tollen / minlen;if(dfs(0, 0, 0)){printf("%d\n", minlen);break;}}}return 0;}24.Sum of Consecutive#include <stdio.h>#include <stdlib.h>#include <string.h>int len[64],n,minlen,get;int b[64];int cmp(const void *a,const void *b) {return *(int *)a<*(int *)b?1:-1;}int dfs(int nowlen,int nowget,int cnt) {if(cnt>=n) return 0;if(get==nowget) return 1;int i,f=0;if(nowlen==0) f=1;for(i=cnt;i<n;i++){if(len[i]+nowlen==minlen){b[i]=1;if(dfs(0,nowget+1,nowget)) return 1;b[i]=0;return 0;}else if(len[i]+nowlen<minlen){b[i]=1;if(dfs(nowlen+len[i],nowget,i+1)) return 1;b[i]=0;if(f) return 0;while(i+1<n&&len[i]==len[i+1]) i++;}}return 0;}int main(){int i,tollen,q=0,c[100];while(scanf("%d",&n),n){tollen=0;int j=0,p;for(i=0;i<n;i++){scanf("%d",&p);if(p<=50){len[j]=p;tollen+=len[j];j++;}}n=j;if(n==0){printf("0\n");continue;}qsort(len,n,sizeof(int),cmp);for(minlen=len[0];;minlen++){if(tollen%minlen) continue;memset(b,0,sizeof(b));get=tollen/minlen;if(dfs(0,0,0)){c[q]=minlen;q++;break;}}}for(i=0;i<q;i++)printf("%d\n",c[i]);return 0;}25.Symmetric Sort#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){double A[100];int i=0,j=0,k=0,l=0,sum=0;while(1){scanf("%lf",&A[i]);if(A[i]==0)break;i++;}for(j=0;j<i;j++){if(A[j]==2)printf("1\n");else{int B[10000],m=1,number=0;double n;B[0]=2;for(k=3;k<=A[j];k+=2){n=(double)k;for(l=2;l<=sqrt(n);l++){if(k%l==0)goto ai;}B[m]=k;m++;ai:;}for(k=0;k<m;k++){sum=0;for(l=k;l<m;l++){sum+=B[l];if(sum==A[j]){number++;break;}}}printf("%d\n",number);}}return 0;}26.The Clock#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char s[100][100],a[100];int i,j,n;scanf("%d",&n);for(i=0;i<n;i++) scanf("%s",s[i]);for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(strlen(s[i])>strlen(s[i+1])) strcpy(a,s[i]),strcpy(s[i],s[i+1]),strcpy(s[i+1],a);if(n%2==0){for(i=0;i<n-1;i=i+2) printf("%s ",s[i]);printf("%s ",s[n-1]);for(i=i-3;i>0;i=i-2) printf("%s ",s[i]);}else{for(i=0;i<n-1;i=i+2) printf("%s ",s[i]);printf("%s ",s[n-1]);for(i=i-1;i>0;i=i-2) printf("%s ",s[i]);}return 0;}27.The Ratio of gainers to losers #include<stdio.h>int main(){char s[5];int i,sum=0;gets(s);for(i=0;s[i]!='\0';i++){switch(s[i]){case'I': sum+=1;break; case'V': sum=5-sum;break; case'X':sum=10-sum;break; }}printf("%d\n",sum);return 0;}28.VOL大学乒乓球比赛#include <stdio.h>#include <stdlib.h>int main(){printf("A=Z\nB=X\nC=Y\n");return 0;}29.毕业设计论文打印#include <stdio.h>#include <stdlib.h>int main(){int a[100],j=1,i,n,m;scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n;i++)if(a[i]>a[m]) j++;printf("%d",j++);return 0;}30.边沿与内芯的差#include <stdio.h>#include <stdlib.h>int main(){int A[100][100],i,j,m,n,s=0,t=0;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%d",&A[i][j]);}}for(i=2;i<m;i++)s=s+A[1][i];for(i=2;i<m;i++)。