NOIP2004初赛普及组P试题与答案 联系客服

发布时间 : 星期二 文章NOIP2004初赛普及组P试题与答案更新完毕开始阅读14e11edf7dd184254b35eefdc8d376eeafaa1796

a,b,c,x,y,z:integer; begin

read(u[0],u[1],u[2],u[3]); a:=u[0]+u[1]+u[2]+u[3]-5; b:=u[0]*(u[1]-u[2] div u[3]+8); c:=u[0]*u[1] div u[2] * u[3]; x:=(a+b+2)*3-u[(c+3) mod 4];

y:=(c*100-13) div a div (u[b mod 3]*5);

if ((x+y) mod 2=0) then z:=(a+b+c+x+y) div 2; z:=(a+b+c-x-y)*2; writeln(x+y-z); read(a); end.

输出:_____________________。 4、------------------------------------------- program program4 ; var c:array[1..2] of string[200]; s:array[1..10] of integer; m,n,i:integer ; procedure numara; var cod:boolean; i,j,nr:integer; begin

for j:=1 to n do begin nr:=0;cod:=true; for i:=1 to m do

if c[i,j]='1' then begin

if not cod then begin

cod:=true;inc(s[nr]);nr:=0; end end

else begin

if cod then begin

nr:=1;cod:=false ; end

else inc(nr); end;

if not cod then inc(s[nr]); end; end; begin

readln(m,n);

for i:=1 to m do readln(c[i]); numara;

5

for i:=1 to m do

if s[i] <>0 then write(i,' ',s[i],' '); read(i); end.

输出:_____________________。

四、完善程序(共28分) 1、三角形内切圆的面积

题目描述:给出三角形三边的边长,求此三角形内切圆的面积。

输入:三个正实数a、b、c(满足三角形三边关系),表示三角形三边边长。 输出:三角形内切圆的面积,结果四舍五入到小数点后2位 输入样例: 3 4 5 输出样例: 3.14 程序:①②③④⑤

PROGRAM PROGRAM1; VAR

A,B,C,R,S,T:REAL; BEGIN

READ(A,B,C); S :=( ① )/2; T:= ② (S*(S-A)*(S-B)*(S-C)); R:=T/S;

WRITELN(3.1415927 * R * ③ :0: ④ ; END.

2..Joseph 题目描述:

原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,……,n。从编号是1 的人开始报数,数到m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,……,如此反复直到所有的人全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。

现在的问题是:假设有k个好人和k个坏人。好人的编号是1到k,坏人的编号是k+1到2k。我们希望求出m的最小值,使得最先出列的k个人都是坏人。 输入:

仅有的一个数字是k (0

使得最先出列的k个人都是坏人的m的最小值。 输入样例:

6

4

输出样例: 30 程序:

program progaram1; var

i,k,m,start:longint; find:boolean;

function check(remain:integer):boolean; var result:integer; begin

result:=____(1)____ mod remain; if ____(2)____ then begin start:=result; check:=true; end

else check:=false; end; begin

find:=false; read(k); m:=k;

while ____(3)____ do begin find:=true; start;=0; for i:=0 to k-1 do

if (not check(____(4)____)) then begin find:=false; break; end; inc(m); end;

writeln(____(5)____); end.

参考答案

一、1.C 2.B 3.D 4.C 5.E 6.A 7.B 8.D 9.C 10.A

11.D 12.C 13.D 14E 15.B 16.C 17.B 18.D 19.E 20.D

二、1.160元 2.10人

三、 1.-80 2.Dog-is-clever

3 . 263 4 . 1 12588 2 12337 3 12339 7

四、 1 . a+b+c SQRT R 2

2 . start+m-1 result>=k not(find) 2*k-I m-1

8