(信息学奥赛辅导)程序设计试题汇编(答案)_第1页
(信息学奥赛辅导)程序设计试题汇编(答案)_第2页
(信息学奥赛辅导)程序设计试题汇编(答案)_第3页
(信息学奥赛辅导)程序设计试题汇编(答案)_第4页
(信息学奥赛辅导)程序设计试题汇编(答案)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、优质文本程序设计试题及答案备注:试题难度评价采取五级评价体系,分根底、容易、一般、稍难、难五个等级,其中的一、二、三级都属于程序设计的根底试题级别,同学们稍加思考均有能力求得正确解答,对于四级试题属于程序设计试题根底级别的思考题,五级难度试题在此没有涉及,在程序设计高级试题中另行讲解。对于根底和容易两个级别的程序设计试题,假设能够给出语句分类如If条件语句、条件语句嵌套、循环语句、多重循环语句等的将尽量给出。假设属于13大类别的将尽量标注。程序设计试题几大分类:1、1素数类问题求素数的几种算法:2、数据排序问题数据排序的几种方法:3、 最大公约数和最小公倍数问题几种算法:4、 公式求解类问题如

2、求圆周率、自然常数e、解方程等等:5、 编号相反处理问题:6、 约瑟夫问题或猴子选大王问题、密码问题:7、 回文数问题:8、 高精度数值计算问题:9、 数值计算问题:10、 进制相互转换问题:11、 字符串倒置问题:12、 排列与组合类问题:13、 因子、质因子质因数类相关问题:答案局部:程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最正确算法和最正确程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改良程序经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约

3、数、求两个数的最小公倍数等问题的子函数源程序,请务必记住! 判断是否为素数,假设是素数那么返回true,假设不是素数那么返回false:function prime(x:longint):boolean; var j,y:longint; begin prime:=true; if x<2 then prime:=false; y:=trunc(sqrt(x); for j:=2 to y do if (x mod j = 0) then begin prime:=false; exit; end; end;备注:1100之间所有的素数:2、3、5、7、11、13、17、19、23、29

4、、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。共25个 判断是否为回文数,假设是回文数那么返回true,假设不是回文数那么返回false:function huiwen(n:longint):boolean; var m,i,j:longint; a:array1.10 of integer; begin if n<0 then begin huiwen:=false; exit; end; m:=n; i:=0; huiwen:=true; repeat i:=i+1; ai:=m mod 10; m:=m div 10; until m=

5、0; for j:=1 to (i div 2) do if aj<>ai-j+1 then begin huiwen:=false; exit; end; end;求最大公约数子函数,返回两个正整数的最大公约数,采用辗转相除法算法;function gcd(a,b:longint):longint; begin if b=0 then gcd:=a else gcd:=gcd(b,a mod b); end; 求最小公倍数:lcm=a*b div gcd(a,b);以下程序设计试题来自?奥赛经典语言篇?第2章 根本语句与程序结构例题局部:1、 求梯形的面积。梯形面积公式:,测试数

6、据2、 求一元二次方程ax2bxC0的两个实根。求根公式:,测试数据a1,b5,c6;答案:x12、x233、 输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。 4、 输入三个数a、b、c,首先判断这三个数能否构成三角形,假设能,那么求出三角形的面积。提示:海伦公式,其中,a、b、c为边长,If条件语句,测试数据a5,b6,c7;答案:14.75、 从键盘读入三个数,按从大到小的顺序把它们打印出来。,If条件语句6、 输入三角形的三边,判断它是否是直角三角形。,If条件语句,测试数据3、4、5;4、5、6;答案Yes;No7、 编写一个根据用户键入的两个操作数和一个运算符

7、,由计算机输出运算结果的程序。8、 输入一个年号,判断它是否为闰年。,If条件语句,测试数据1900;2000;2016;答案:No;Yes;Yes9、 编程计算S123100。,循环语句, 答案:5050相关练习:1;2;3;4;相关练习答案:15.19保存2为小数;2338350;32550;4171710、 根据公式,计算圆周率的值。,循环语句,测试数据n10000;答案:3.1414971639program e;var i:longint; s:real;begin writeln; s:=0; for i:=1 to 10000 do s:=s+1/(i*i); writeln(s

8、qrt(6*s);end.11、 计算n!。n!1×2×3××n,取n10,循环语句,10!362880012、 一对兔子,每个月可以生一对小兔,而小兔过一个月后也可生一对小兔。即兔子的对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对,假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代?Fibonacci数列问题,循环语句, 1、2、3、5、8、13、21、34、55、89、144、233;答案23313、 求两个整数a与b的最大公约数和最小公倍数。,循环语句、If条件语句,测试数据16和24,最大公约数8,最小公倍

9、数4814、 利用格利高公式求。,直到最后一项的值小于106为止。,循环语句答案:3.1415946569E+00program e2_32;var n,fh:longint; s,t,p:real;begin writeln; n:=1; s:=0; t:=1; fh:=1; while (abs(t)>=1e-6) do begin t:=fh/n; s:=s+t; n:=n+2; fh:=-fh; end; p:=4*s; writeln('pi=',p);end.相关练习:利用公式,求。计算前10000项时,答案为3.1415426536program e;var

10、 i,a,b:longint; x,s:real;begin writeln; s:=0; for i:=1 to 10000 do begin a:=(4*i-3); b:=(4*i-1); s:=s+1/(a*b); end; writeln(8*s);end.15、 求100999中的水仙花数。假设三位数ABC,ABCA3B3C3,那么称ABC为水仙花数。例如153,135333153,那么153是水仙花数。,循环语句答案:153、370、371、407program e12;var i,a,b,c:integer;begin writeln; for i:=100 to 999 do

11、begin a:=i div 100; b:=(i mod 100) div 10; c:=i mod 10; if i=a*a*a+b*b*b+c*c*c then write(i:8); end;end.16、 试编写能够打印输出如以下图形的程序。,循环语句AAAAAAAAA AAAAAAA AAAAA AAAAprogram e;const n=5;var i,j:integer;begin writeln; for i:=1 to n do begin write('':i);for j:=1 to (n-i)*2+1 do write('A'); wr

12、iteln; end;end.17、 四个学生上地理课,答复我国四大淡水湖大小时这样说:甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三。乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三。丙:“最小洪泽湖,洞庭湖第三。丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三。对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。习题局部:1、 三角形的两边a、b和夹角jc的值,求第三边条件由键盘输入。提示:余角公式测试数据:输入a3、b4、jc90;输出5program e2_5;var a,b,c,jc:real;begin writeln('input a,b,jc:'); r

13、eadln(a,b,jc); c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc/180); writeln(c:8:2);end.2、 编写程序把一个四位整数3581颠倒成1853。program e;const n=3581;var a,b,c,d:integer;begin writeln; a:=n mod 10; b:=(n div 10) mod 10; c:=(n div 100) mod 10; d:=n div 1000; writeln(a,b,c,d);end.相关练习:任意输入一个正整数,颠倒输出该数。program e;var n:longint;begi

14、n writeln; writeln('input a integer number:'); readln(n); repeat write(n mod 10); n:=n div 10; until n=0;end.3、 输入a、b、c三个数,打印出最大者。,If条件语句program e;var a,b,c:real;begin writeln('input three number for a,b,c:'); readln(a,b,c); if (a>b)and(a>c) then writeln(a); else if (b>a)and

15、(b>c) then writeln(b); else writeln(c);end.4、 从键盘读入两个数,比拟其大小,把大数置于x,小数置于y。请设计实现该功能的程序。,If条件语句程序略5、 输入三个数,判断以这三个数为边能否组成一个三角形。假设不能,那么给出适当信息;假设能,那么进一步判断它们构的是锐角三角形、直角三角形还是钝角三角形,并输出其特征等边、等腰、直角、一般、求其面积。,If条件语句算法分析:对于判断是锐角、直角、还是钝角三角形,只需判断最大边的平方与其余两边的平方和的大小比拟即可,小于那么为锐角、等于那么为直角、大于那么为钝角。测试数据:1、2、3;3、4、5;4、

16、4、7;5、5、5;答案:No;直角、面积6.00;钝角、等腰、面积6.78;锐角、等边、面积10.83program e;var a,b,c,t,s,d,ja,jb,jc:real;begin writeln('input three number for a,b,c:'); readln(a,b,c); if a<b then begin t:=a; a:=b; b:=t; end; if a<c then begin t:=a; a:=c; c:=t; end; if (a<b+c) then begin if (a*a<b*b+c*c) then

17、 writeln('rui jiao san jiao xing.') else if(a*a=b*b+c*c) then writeln('zhi jiao san jiao xing.') else writeln('dun jiao san jiao xing.'); if (a=b)and(b=c)and(c=a) then writeln('deng bian san jiao xing.') else if (a=b)and(b<>c)or(a=c)and(c<>b)or(b=c)and(c&l

18、t;>a) then writeln('deng yao san jiao xing.') else if (a*a<>b*b+c*c) then writeln('yi ban san jiao xing.'); d:=(a+b+c)/2; s:=sqrt(d*(d-a)*(d-b)*(d-c); writeln('s=',s:0:2); end else writeln('NO!');end.6、 设我国目前的人口为11亿,且每年的增长率为1.5。问多少年后,我国的人口会翻一番?答案:47program e2

19、_22;var i:integer; s:real;begin writeln; s:=11; i:=0; while s<22 do begin s:=s*(1.015); inc(i); end; writeln(i);end.7、 Fibonacci数列问题:数列的头两个数分别是0和1,从第三个数开始,每个数皆为它的前两个数之和,即:0,1,1,2,3,5,输出该数列的第50个数。,循环语句答案:7778742049program e;$N+,E+var i:integer; x,y,z:extended;begin writeln; x:=0; y:=1; write(x:20:

20、0,y:20:0); for i:=3 to 50 do begin z:=x+y; write(z:20:0); x:=y; y:=z; end;end.8、 编写程序求出下式中n的最大值:224262n2<1500。,循环语句答案:18program e2_24;var n,s:integer;begin writeln; s:=0; n:=0; while s<1500 do begin inc(n,2); inc(s,n*n); end; writeln(n-2);end.9、 把一元的钞票换成一分、二分和五分的硬币每种至少一枚,问有多少种兑换方法?答案:461progra

21、m e2_29;var i,j,k,ans:integer;begin ans:=0; for k:=1 to 19 do for j:=1 to 47 do for i:=1 to 93 do if (k*5+j*2+i)=100 then inc(ans); writeln(ans);end.10、 编写程序求最小正整数m、n0<n<m为何值时,1989m与1989n的最后三位数字相同?算法:这类数字很大且有效数字位数很多超出最多有效位数extended数据类型有效数字18位的数字问题,一定要另辟蹊径寻找突破口,注意到此题只要求最后三位数字相同,那么我最多保存最后四位有效数字即

22、可进行判断。还请记住这样一个事实,如1989×19893956121,3956121×19897868724669,最后四位数字是“4669,而我把3956121取其最后的四位数“6121与1989相乘即6121×1989=12174669,最后四位数字也是“4669,没有破坏最后四位有效数字的值,因此可以通过这种方法来编写此程序。答案:m51;n1;program e;var m,n,i,j:integer; x,y,a,b:longint;begin writeln; for m:=2 to 60 do for n:=1 to m-1 do begin x:=

23、1; y:=1; for i:=1 to m do begin x:=x mod 10000; x:=x*1989; a:=x mod 1000; end; for j:=1 to n do begin y:=y mod 10000; y:=y*1989; b:=y mod 1000; end; if a=b then writeln('m=',m,' n=',n); end;end.11、 编写程序提示用户输入一系列整数,用0作结束标志,统计其中有多少个正数。program e;var count,x:integer;begin writeln; writel

24、n('input integer number(0-end):'); count:=0; repeat read(x); if x>0 then inc(count); until(x=0); writeln('count=',count);end.12、 求自然常数的值。提示:0!1,1!1(1) 直到第50项;2直到最后一项小于105。答案:12.71828182845905E+0000;22.71828152557319E+0000备注:第2小问程序略,只须将更改语句“until (1/s)<1E-5;即可求的解答program e2_35;$

25、N+var i,count:integer; e,s:extended;begin e:=1; count:=0; repeat inc(count); s:=1; for i:=1 to count do s:=s*i; e:=e+1/s; until count=50; writeln(e);end.13、 三齐王点兵的故事。相传三齐王韩信才智过人,从不直接清点自己军队的人数,只是让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了不超过100人。输入三次排尾的人数,输出总人数。program e2_36;var a,b,c,i:integer;be

26、gin writeln('shu ru p3(02),p5(04),p7(06) de wei shu:'); readln(a,b,c); for i:=100 downto 1 do if (i mod 3=a)and(i mod 5=b)and(i mod 7=c) then writeln(i); if i=1 then writeln('No answer!');end.14、 编写程序,计算N!以十进制数形式表示的数中最右的非零数字,并找出在它右边有几个零。例如12!1×2×3××12479001600。因此1

27、2!的右边有2个零。提示:碰到5、52、53、54才会出现末尾是零,所以1000!末尾零的个数为:1000 div 51000 div 521000 div 531000 div 54249下面的程序没采用上面的算法,采取另一种算法实现了这一程序,显然上面的算法效率高程序算法:只需提供末尾几位有效数字即可,我采取提供四位有效数字相乘program I_11;var s:longint; i,d:integer;begin writeln; d:=0; s:=1; for i:=1 to 1000 do begin s:=s*i; if (s mod 1000 =0) then begin s:

28、=s div 1000; d:=d+3; end; if (s mod 100 = 0) then begin s:=s div 100; d:=d+2; end; if (s mod 10 = 0) then begin s:=s div 10; d:=d+1; end; s:=s mod 10000; end; writeln; write(d);end.15、 编写程序,输出“字母塔。以此类推共26层。A ABA ABCBAprogram e2_40;var i,j:integer;begin writeln; for i:=1 to 26 do begin for j:=1 to 26

29、-i do write(' '); for j:=1 to i do write(chr(64+j); for j:=i-1 downto 1 do write(chr(64+j); writeln; end;end.第4章 数组类型例题局部:1、 输入10个整数,把这10个数按从小到大的顺序排列。冒泡法排序和选择法排序两种方法冒泡法排序:program e1;const n=10;var a:array1.10 of integer; i,j,t:integer;begin writeln('input ',n,' integer number:

30、9;); for i:=1 to n do read(ai); for i:=1 to n-1 do for j:=1 to n-i do if aj>aj+1 then begin t:=aj; aj:=aj+1; aj+1:=t; end; for i:=1 to n do write(ai:5);end.2、 折半查找。二分法查找3、 旅馆里有一百个房间,从1到100编了号。第一个效劳员把所有的房间门都翻开了,第二个效劳员把所有编号是2的倍数的房间“相反处理,第三个效劳员把所有编号是3的倍数的房间作“相反处理,以后每个效劳员都是如此。问第100个效劳员来过后,哪几扇门是翻开的。所谓

31、“相反处理是:原来开着的门关上,原来关上的门翻开。提示:对于任何一个编号,例如8,它的因子只有1、2、4、8,并且成对出现,当此数的因子数为偶数个时将被关上,当此数的因子数为奇数个时才会被翻开。考虑到因子成对出现的情况,因此只有平方数的因子是奇数个的,所以门被翻开的只能是平方数的房间,如1,4等4、 编写程序把任意十进制整数转换成二进制整数。5、 所谓“幻方,是一个行、列为奇数的方阵,把1n2这n2个不同的数放入方阵中,使方阵的每行、每列和每个对角线上的元素的和全部相等。下面给出幻方的一种排列方法:(1) 先把1放在第一行的中间位置;(2) 下一个数放在上一个数的右上方;(3) 假设右上方已超

32、出方阵的第一行,那么下一个数放在下一列的最后一行上;(4) 假设右上方已超出方阵的最后一列,那么下一个数放在上一行的第一列上;(5) 假设右上方已经有数,或右上方已超出方阵的第一行最后一列,那么下一个数放在上一个数的正下方。编写程序,对输入小于15的n,打印出相应的幻方。6、 在一个字符数组LET中形成由A开始的连续26个大写字母构成的字串,并将其倒置后仍放在LET中。7、 随机输入一个长度不超过255的字符串,将其倒置后输出。8、 随机输入一些国家的英文名字,以end作为输入结束标志,按字母顺序排序后输出。9、 求n个字符串的最长公共子串,n<20,字符长度不超过255。例如n3,由键

33、盘依次输入三个字符串为:what is local bus?Name some local bus.Local bus is high speed I/O bus close to the processor.那么最长公共子串为“local bus。10、 文本的整版。编写一个程序,从键盘以任意的方法输入句子,然后打印出来。打印时每行宽度必须为n个字符。如果一行的最后一个单词超出了本行n个字符的范围,那么应把它移到下一行去。输入一个句子测试你的程序。习题局部:1、 输入n个整数,请找出最小数所在的位置,并把它与第一个数对调。program e4_2;var a:array1.10of inte

34、ger; i,t,y:integer;begin writeln('input ten integer number:'); for i:=1 to 10 do read(ai); t:=a1; for i:=2 to 10 do if ai<t then t:=ai; for i:=1 to 10 do if ai=t then begin writeln('the min number is ',i,'th'); ai:=a1; a1:=t; end; for i:=1 to 10 do write(ai:8);end.2、 用边排序边

35、合并的方法把两个有序数列合并为一个新的有序数列,不得先合并再重新排序。 测试数据:这里a组数据共8个:1 1 3 6 6 7 9 10;b组数据共5个:0 1 2 3 4program e4_3;var a:array1.8 of integer; b:array1.5 of integer; c:array1.13 of integer; i,j,k,m,n:integer;begin writeln('input 8 integer number of square arrayA:'); for i:=1 to 8 do read(ai); writeln('inp

36、ut 5 integer number of square arrayB:'); for i:=1 to 5 do read(bi); j:=1; k:=1; m:=aj; n:=bk; for i:=1 to 13 do begin if m<n then begin ci:=m; inc(j); m:=aj; if j=9 then m:=maxint; end else begin ci:=n; inc(k); n:=bk; if k=6 then n:=maxint; end; end; for i:=1 to 13 do write(ci:4);end.3、 将一个数插

37、入到有序的数列中,插入后数列仍然有序。测试数据:有序数组为1 1 3 6 6 7 9 10;待插入数为5program e4_4;var i,j,n:integer; flag:boolean; a:array1.9 of integer;begin writeln('input 8 integer square number:'); for i:=1 to 8 do read(ai); writeln('input a integer number to insert:'); readln(n); flag:=false; i:=1; repeat if ai

38、>n then flag:=true else inc(i); until flag=true; for j:=9 downto i+1 do aj:=aj-1; ai:=n; for i:=1 to 9 do write(ai:4);end.4、 有N个无序的数存放在A数组中,请将后面相同的数删成只剩下一个,并输出经过删除后的数列。测试数据:数列为1 3 5 3 7 5 3 1;答案:1 3 5 7program e4_5;var a:array1.8 of integer; i,j,n:integer;begin writeln('input 8 integer number

39、:'); for i:=1 to 8 do read(ai); for i:=2 to 8 do for j:=1 to i-1 do if ai=aj then ai:=maxint; for i:=1 to 8 do if ai<>maxint then write(ai:4);end.5、 有N个人排队到R个相同的水龙头去打水,他们装满各自水桶的时间T1、T2、TN为整数且互不相等,应如何安排他们打水的顺序才能使他们花费的总时间最少?花费的总时间等于每个花费时间的总和6、 求一个五阶方阵中某个元素的位置:它在行上是最小的,在列上也是最小的,如果没有请输出“NO FIN

40、D!。分析:整个矩阵中的最小值,当然也是所在行和所在列的最小值,因此肯定能找到这样的数测试数据:答案:2、1、3、611427859231253222118151716241261310192014program e;var i,j,x,y:integer; minx:integer; a:array1.5,1.5 of integer;begin writeln; writeln('input number(5*5):'); for i:=1 to 5 do for j:=1 to 5 do read(ai,j); for i:=1 to 5 do begin minx:=a

41、i,1; x:=i; y:=1; for j:=1 to 5 do if ai,j<minx then begin minx:=ai,j; y:=j; end; for j:=1 to 5 do if aj,y<minx then break; if j=5 then writeln('the number is ',minx,'',x,'','',y,''); end;end.第5章 过程与函数例题局部:1、 编程求:1!3!5!7!9!11!。2、 求数字的乘积根。一个正整数的数字的乘积N的定义是:

42、这个整数中非零数字的乘积。例如,整数999的数字乘积为9×9×9,即729。729的数字乘积为7×2×9,即126。126的数字乘积为1×2×6,即12。12的数字乘积为1×2,即2。一个正整数的数字乘积根N是这样得到的:反复取该整数的数字乘积,直到得到一位数字为止。例如,在上面的例子中数字的乘积根是2。编写一个程序,输入一个正整数长度不超过200位数字,输出计算其数字乘积根的每一步结果。3、 汉诺Hanoi塔问题。设有n个大小不等的中空圆盘,按照从小到大尺寸和序号的顺序叠套在立柱A上。另有两根立柱B和C,如下图。问题要求把

43、全部圆盘从A柱源柱移到C柱目标柱。移动过程中可借助B柱中间柱。移动时有如下要求:(1) 一次只能移动一个圆盘;(2) 不允许把大盘放在小盘上边;(3) 可使用任意一根立柱暂存圆盘。ABC4、 把一个十进制整数转化为K进制数K10。5、 八皇后问题:把八个皇后摆在8×8国际象棋棋盘格子内,使它们互不捕获对方。换言之,在任何一行、一列或一条对角线上,仅能放置一个皇后。这一问题是由19世纪著名数学家高斯Gauss于1850年首先提出的。答案共有92种解答6、 :切比雪夫多项式如下: 提示:运用递归函数计算对给定的不同的正整数,它是一些阶数不同的多项式,编程计算第n个多项式的值。习题局部:1

44、、 编写一递归函数说明,用以计算组合数CM,N。即2、 两个人玩井字游戏,在井字进分的九个空位上轮流画O或*,谁最先使自己的三个O或三个*在一条直线上,谁就赢了。编写程序检查每一步是否走得正确,并告诉谁是胜利者。第6章 集合与记录类型例题局部:1、 七段数码管问题。2、 任意给出一个正整数N,找一个正整数M,使得N*M的值的数字由0、1、CC9组成,且这些数字至少出现一次。编写程序在整数范围内找出满足条件的最小M。假设没有给出信息,那么输出“No find!。例如:C3、N65时,M48,65×483210; C8、N125时,“No find!。以下程序设计试题来自?计算机二级考试

45、复习指南?1. 数列称为e数列,每一个enn1,2,称为e数。求1,30000之内:(1) 最大的e数;2e数的数目。该数列前面几项为1、1、3、11、53、;答案:16687;8program e;var a,b,c,n:longint;begin writeln; n:=3; a:=1; b:=1; repeat c:=(n-2)*a+(n-1)*b; a:=b; b:=c; inc(n); until c>30000; writeln('maxe=',a,' count=',n-2);end.2. 计算并输出:之值精确到小数点后第5位。答案:0.99

46、900program e;var i:integer; s,n:real;begin writeln; s:=0; for i:=1 to 1000 do begin n:=i; s:=s+1/(n*(n+1); end; writeln(s:0:5);end.3. ,求:(1) F50;2F0F1F50。答案:212101;97262program e;var i,a,b,c,d,s:longint;begin writeln; a:=1; b:=1; c:=1; s:=3; for i:=3 to 50 do begin d:=a-2*b+c; s:=s+d; a:=b; b:=c; c:

47、=d; write(d:8); end; writeln; writeln('s=',s);end.4. 求满足:A·B716699并且AB最小两个条件的A和B。答案:A563;B1273program e;var a,x,s,mina,minb:longint;begin writeln; s:=716699; x:=trunc(sqrt(716699); for a:=1 to x do if (716699 mod a=0)and(a+(716699 div a)<s) then begin s:=a+(716699 div a); mina:=a; mi

48、nb:=(716699 div a); end; writeln('A=',mina,' B=',minb);end.5. 一自然数平方的末几位与该数相同时,称此数为自同构数。例如,由于5225,那么称5为自同构数。求出1,700以内的:1最大的自同构数;2自同构数数目。答案:6257program e;var i,count:longint;begin writeln; count:=0; for i:=1 to 9 do if (i*i-i) mod 10=0 then inc(count); for i:=10 to 99 do if (i*i-i) mo

49、d 100=0 then inc(count); for i:=100 to 700 doif (i*i-i) mod 1000=0 then begin inc(count); write(i:8); end; writeln; writeln('count=',count);end.6. 假设某不含数字0的三位正整数,其平方数至少有三位同样的数字,那么称该三位数为三重数。例如,由于:5112261121有三位1,所以511为三重数。求出:1按升序排列第10个三重数;2按升序排列前10个三重数之和;答案:1258;21826program e1;var i,j,k,a,b,c

50、,x,n,count,s:longint; aa:array1.5of integer;begin writeln; s:=0; count:=0; for i:=111 to 316 do begin a:=i div 100; b:=(i div 10) mod 10; c:=i mod 10; if (a<>0)and(b<>0)and(c<>0) then begin x:=i*i; aa1:=x div 10000; aa2:=(x div 1000) mod 10; aa3:=(x div 100) mod 10; aa4:=(x div 10)

51、 mod 10; aa5:=x mod 10; for j:=1 to 3 do begin n:=1; for k:=j+1 to 5 do if aaj=aak then n:=n+1; if n>2 then begin writeln(i:8,x:8); s:=s+i; count:=count+1; break; end; end; end;if count=10 then break; end; writeln(s:8);end.7. 满足以下两个条件:a千位数字与百位数字相同非0,十位数字与个位数字相同;b是某两位数的平方。的四位正整数称为四位平方数。例如,由于:7744882,那么称7744为四位平方数。求出:1所有四位平方数的数目;2所有四位平方数之和。分析:最小四位数1000是31.6的平方

温馨提示

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

评论

0/150

提交评论