文档库

最新最全的文档下载
当前位置:文档库 > PASCAL入门测试12(附答案)

PASCAL入门测试12(附答案)

小猪上幼儿园的时候,报名参加了折纸兴趣小组。他表现出了极大的热情,折出了n 件折纸作品。他的作品只有3种,分别是长方形、正方形和三角形。

小猪很想知道他的n 件折纸的周长之和。

【输入】

输入文件folding.in 的第一行只有一个整数n ,表示共有n 件作品。接下来n 行,每行有若干个以空格分隔的整数,表示一件作品的情况。其中第一个整数k (k=1或2或3),表示小猪制作的这件作品的类型,1表示长方形,2表示正方形,3表示三角形。

如果k 为1,后面会跟二个正整数a 和b ,表示长方形的二条相邻边的长度分别为a 和b ;

如果k 为2,后面会跟一个正整数a ,表示正方形的四条边的长度均为a 。如果k 为3,后面会跟三个正整数a 、b 和c ,表示三角形三条边的长度分别为a 、b 和c (输入数据保证a,b,c 能构成三角形,不需验证)。

【输出】

输出文件folding.out 中仅有一行,该行只有一个整数,表示所有作品的周长之和。

【样例输入】

3123243678

【样例输出】

47

【样例说明】

a

b

c

三边长度分别为a,b,c 的三角形,周长为a+b+c

a

b

相邻边长度分别为a 和b 的长方形,周长为2a+2b

a

b

a

a

边长为a 的正方形,周长为4a

a

a

共有3件作品:

第一件作品:二条相邻边长度分别为2和3的长方形;

第二件作品:边长为4的正方形;

第三件作品:三条边长度分别为6、7、8的三角形。

这3件作品的周长分别为10、16、21,它们的周长之和为47。

【数据规模】

50%的数据,1≤n≤50,所有边长为不超过100正整数。

100%的数据,1≤n≤100000,所有边长为不超过100000的正整数。var n,a,b,c,k,I,S:LONGint;

begin read(n);for i:=1to n do

begin read(k);

case k of

1:begin read(a,b);s:=s+2*(a+b);end;

2:begin read(a);s:=s+4*a;end;

3:begin read(a,b,c);s:=s+a+b+c;end;

end;

end;

write('s=',s);

end.

输入6

250

3100130140

18090

1300500

3500600700

290

S=4670

输入10

1900010000

250000

280000

38000900010000

3200003000040000

135********

3300040005000

2500000

190009500

2678900

S=5599600

数学家总是喜欢研究有关数字的一些奇怪的性质。例如,他们认为945就是一个

有趣的数字。因为它的所有比其小的因子的和比它本身大,而且945是具有这个性质的最小奇数。输入两个数L和U,中间用空格隔开。1<=L<=U<=10000。输出在L和U个范围里,找到那个拥有最多因子的数P,和它的因子个数D。

输入110输出:64

VAR

L,U,N,P,D,X,Y:INTEGER;

BEGIN

read(l,u);

D:=0;

FOR X:=L TO U DO

BEGIN

N:=0;

FOR Y:=1TO X DO

IF X MOD Y=0THEN N:=N+1;

IF N>D THEN

BEGIN

P:=X;

D:=N;

END;

END;

WRITELN(P,'',D);

END.

输入110000输出756064输入200500输出36024

输入100200输出18018输入50006000输出504060

某种商品编码是一个由13位数字组成的可识别的编码。通过对这些编码数字使用一种计算方法可以检验输入的数字是否正确。

这种称为13位数字的“1-3和”的计算方法是,从第一位开始乘1,每个数字交替乘以1和3,然后算出相加的和。例如,9780921418948的“1-3和”的计算如下:

9*1+7*3+8*1+0*3+9*1+2*3+1*1+4*3+1*1+8*3+9*1+4*3+8*1=120

要求输入商品编码,计算对应的“1-3和”。

样例输入:9780921418948样例输出:120

var

c:char;

s,i,n,m:integer;

begin

s:=0;

for i:=1to13do begin

read(c);

if odd(i)then m:=1else m:=3;

s:=s+m*(ord(c)-48);

end;

writeln(s);

end.

输入9876543210987输出125

输入1234567890123输出95

输入两个真分子的分子与分母(分子、分母的合法性不作检查),对这两个分数进行加法计算。若符合条件,则应将计算的结果化为带分数。

例如:输入2523

输出1+1/15(带分数的表达形式)

输入3818输出4/8(不作约分)

输入1212输出1

var

a,b,c,d,i,s:integer;

begin

readln(a,b,c,d);

for i:=b to b*d do

if(i mod b=0)and(i mod d=0)

then break;

a:=(i div b)*a;

c:=(i div d)*c;

s:=a+c;

if s

then writeln(s,'/',i)

else if s=i

then writeln(1)

else writeln(1,'+',s-i,'/',i)

end.

输入781013输出1+64/103输入5101020输出1

小明发现了一个有趣的现象,有些数字(例如:2333)本身是个质数,将末尾数去掉后发现它仍然是质数,依此类推,一直到第一位仍是质数(含1)。现在给定m和n的值(m

输入输出示例:

输入:50100

输出:5

说明:五个符合的质数是53、59、71、73、79。

var

n,m,i,a,j,t:longint;

f:boolean;

begin

read(n,m);

for i:=n to m do begin

a:=i;f:=true;

repeat

for j:=2to trunc(sqrt(a))do

if a mod j=0then f:=false;

a:=a div10;

until(a=0)or(f=false);

if f then inc(t);

end;

writeln(t);

end.

输入525

7

输入501500

32

输入900011000输出0

输入2900029500输出1

4.四个整数,在相邻两数之间任意添上"+"或"-"可以构成不同的式子,并得到不同的值,例如6,-3,10,2可以有以下8个不同的式子:6+(-3)+10+2=156+(-3)+10-2=11 6+(-3)-10+2=-56-(-3)+10+2=216+(-3)-102-2=-96-(-3)+10-2=17 6-(-3)-10+2=16-(-3)-10-2=-3

若其中某个式子的值能被整数K整除,则称该整数序列能被K整除,否则称该序列不能被K整除.你的任务是编定一个程序能否被K整除.数据读入如下:

第一行为:K第二行为:四个整数,每个整数的绝对值不超过1000

若该序列能被K整除,则输出能被K整除的式子,否则输出"Impossible".

例:输入:36,-3,10,2输出:6+(-3)+10+2=15

6-(-3)+10+2=21

6+(-3)-102-2=-9

6-(-3)-10-2=-3

var k,a,b,c,d,x,y,z,s,t:integer;

begin

readln(k);

readln(a,b,c,d);t:=0;

for x:=1to2do

for y:=1to2do

for z:=1to2do begin

s:=a;

if x=1then s:=s+b else s:=s-b;

if y=1then s:=s+c else s:=s-c;

if z=1then s:=s+d else s:=s-d;

if s mod k=0then begin

write(a);

if x=1then write('+')else write('-');

if b>0then write(b)else write('(',b,')');

if y=1then write('+')else write('-');

if c>0then write(c)else write('(',c,')');

if z=1then write('+')else write('-');

if d>0then write(d)else write('(',d,')');

writeln('=',s);t:=t+1;

end;

end;

if t=0then writeln(’Impossible’);

readln;

end.

输入5↙610-34输出6+10-(-3)-4=15

6-10-(-3)-4=-5

输入7↙12030-6055输出120+30-(-60)-55=35输入9↙10268输出Impossible

输入8↙5036-32-30

输出50+36+(-32)+(-30)=24

50+36-(-32)+(-30)=88

50-36+(-32)+(-30)=-48

50-36-(-32)+(-30)=16