(信息学奥赛辅导)程序设计试题汇编(答案)(5)

2019-02-15 11:14

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第21页

writeln; writeln('s=',s); end.

4. 求满足:A·B=716699并且A+B最小两个条件的A和B。

(答案:A=563;

B=1273)

(★★★)

program 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)

begin s:=a+(716699 div a); mina:=a; minb:=(716699 div a); end; writeln('A=',mina,' B=',minb); end.

5. 一自然数平方的末几位与该数相同时,称此数为自同构数。例如,由于52=25,则称5为自同构

数。求出[1,700]以内的:(1)最大的自同构数;(2)自同构数数目。 (答案:①625

②)7)

(★★)

program 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) mod 100=0 then inc(count); for i:=100 to 700 do

if (i*i-i) mod 1000=0 then begin inc(count); write(i:8); end; writeln; writeln('count=',count); end.

6. 若某不含数字0的三位正整数,其平方数至少有三位同样的数字,则称该三位数为三重数。例如,

由于:5112=261121(有三位1),所以511为三重数。求出:

(★★★★)

(1)按升序排列第10个三重数;(2)按升序排列前10个三重数之和;

(答案:(1)258;

(2)1826)

program e1; var

i,j,k,a,b,c,x,n,count,s:longint; aa:array[1..5]of integer; begin writeln;

s:=0; count:=0; for i:=111 to 316 do

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第22页

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;

aa[1]:=x div 10000;

aa[2]:=(x div 1000) mod 10; aa[3]:=(x div 100) mod 10; aa[4]:=(x div 10) mod 10; aa[5]:=x mod 10; for j:=1 to 3 do begin n:=1;

for k:=j+1 to 5 do

if aa[j]=aa[k] 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)是某

两位数的平方。的四位正整数称为四位平方数。例如,由于:7744=882,则称7744为四位平方数。求出:(1)所有四位平方数的数目;(2)所有四位平方数之和。

(★★)

(分析:最小四位数1000是31.6的平方,最大的四位数9999是99.9的平方) (答案:①1;

②7744)

program e;

var

i,x,count,s:longint; begin

writeln; count:=0; s:=0; for i:=32 to 99 do begin x:=i*i;

if ((x div 1000)=((x div 100) mod 10))and(((x div 10) mod 10)=(x mod 10)) then begin inc(count); s:=s+x; end; end;

writeln('count=',count,' s=',s); end.

8. 其平方等于某两个正整数平方之和的正整数称为弦数。例如,由于32+42=52,因此5为弦数。

求[121,130]之间:(1)弦数数目;(2)最小的弦数;(3)最大的弦数。 (分析:设a2+b2=c2,且a

(★★★)

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第23页

(答案:①4; ②122; ③130)

program e; var

i,j,k,x,count:longint; begin

writeln; count:=0; for i:=121 to 130 do begin

x:=trunc(sqrt(i*i/2)); for j:=1 to x do begin

k:=trunc(sqrt(i*i-j*j)); if (i*i=j*j+k*k) then

begin inc(count); writeln(i,'*',i,'=',j,'*',j,'+',k,'*',k); break; end; end; end;

writeln('count=',count); end.

9. 求满足以下三个条件:(a)X2+Y2+Z2=512;(b)X+Y+Z之值最大;(c)X最小。的一组X、

Y、Z的值。

(★★★★)

(答案:X=22; Y=31; Z=34)

program e1;

var

x,y,z,n,m,maxs,minx,xx,yy,zz:integer; begin writeln;

n:=trunc(sqrt(51*51/3)); m:=trunc(sqrt((51*51-1*1)/2)); maxs:=0; minx:=51; for x:=n downto 1 do for y:=x to m do begin

z:=trunc(sqrt(51*51-x*x-y*y));

if (z>y)and(x*x+y*y+z*z=51*51) then

if ((x+y+z>maxs)or((x+y+z)=maxs)) then begin

maxs:=x+y+z; xx:=x; yy:=y; zz:=z; end; end;

writeln('x=',xx,' y=',yy,' z=',zz); end.

eax?e?axx?a?sin(x?a)?a?ln10. 计算Y?(精度10-4)(a=0.1、x=1.0)。 22(答案:0.0295) program e;

var

y,a,x:real;

(★)

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第24页

begin

writeln; a:=0.1; x:=1.0;

y:=(exp(a*x)-exp(-a*x))/2*sin(x+a)+a*ln((x+a)/2); writeln(y:0:4); end.

11. 倒勾股数是满足下列公式:

111??(设A>B>C)的一组(3个)整数(A、B、C),例如A2B2C2111??(156,65,60)是倒勾股数,因为。问: (★★) 1562652602(1)A、B、C之和小于100的倒勾股数有多少组? (2)满足(1)的诸组中,A、B、C之和最小的是哪组? (提示:把公式转化为A2B2=C2(A2+B2)) (答案:①2;

②a=20,

b=15,

c=12)

program e; var

a,b,c,count,mins,mina,minb,minc:longint; begin

writeln; count:=0; mins:=100; for c:=1 to 33 do

for b:=c+1 to 49 do for a:=b+1 to 97 do

if (a*a*b*b=c*c*(a*a+b*b))and(a+b+c<100) then begin

inc(count);

if (a+b+c

writeln('count=',count,' a=',mina,' b=',minb,' c=',minc); end.

12. 设有十进制数字a、b、c、d、e,求在满足下列式子:abcd×e=dcba(a非0,e非0非1)的四

位数abcd中,求满足条件的最小的abcd和与之对应的e。 ★)

(答案:1089;

9)

(★

program e1; var

a,b,c,d,e,x,y:longint; begin writeln;

for a:=1 to 9 do for b:=0 to 9 do for c:=0 to 9 do for d:=0 to 9 do for e:=2 to 9 do

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第25页

begin

x:=a*1000+b*100+c*10+d; y:=d*1000+c*100+b*10+a; if (x*e=y) then begin writeln(x:8,e:8); exit; end; end; end.

13. 求方程:x?3x?1?0在区间(0,1)内的解,精度为10-4。

★)

(答案:0.3473)

program e; var

x:real; begin

writeln; x:=0.0001; repeat

if (abs(x*x*x-3*x+1)<1e-4) then writeln(x:0:4); x:=x+0.0001; until x>=1; end.

14. 按递增顺序产生序列M中最小的80个数。M定义如下:数1属于M;若x属于M,则y=2x+1,

z=3x+1也属于M,并求:

(★★★★)

3 (★

(1) 该序列第50个元素之值;(2)该序列前50个元素之和。 (答案:(1)172;

(2)3853)

program e; var

i,j,k,t,p,n:longint;

a:array[1..100] of longint; begin writeln;

p:=1; a[p]:=1; n:=1; while p<50 do begin

a[n+1]:=2*a[p]+1; a[n+2]:=3*a[p]+1; n:=n+2;

for i:=1 to n-1 do for j:=1 to n-i do if a[j]>a[j+1] then

begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; end; p:=p+1; end;

writeln(a[p]:8); end.

15. 在n个一连串的方格内填写字母A或B,但相邻两格内不能都填B。求所有可能的填写方案数。


(信息学奥赛辅导)程序设计试题汇编(答案)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:75t锅炉运行规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: