主题:求助
小小傻瓜
[专家分:150] 发布于 2007-08-08 12:28:00
马上就要复赛了,大家能帮我找找江苏省2002年-2006年的复赛试题吗?
另外还要程序。
找到1年的加20分。
谢谢!
回复列表 (共4个回复)
沙发
天尝地酒 [专家分:870] 发布于 2007-08-17 08:21:00
1, 【回文数个数】
如果一个正整数从左向右读与从右向左读均是一样,则称其为回文数。例如3、121、3223、12021都是回文数。
输入:任意给定的一个正整数n(0<n<=100000)
输出:一个正整数,表示[1,n]之间的回文数的个数。
【输入格式】键盘输入 ,无须合法性检验.
【输出格式】输出到屏幕 。
【样例】
输入 输出
325 41
CLS
INPUT n
IF n <= 0 OR n > 100000 THEN PRINT "重输": END
FOR i = 1 TO n:
a$ = LTRIM$(STR$(i))
l = LEN(a$)
FOR j = 1 TO l \ 2
IF MID$(a$, j, 1) <> MID$(a$, l + 1 - j, 1) THEN GOTO 20
NEXT j: s = s + 1
20 NEXT i: PRINT s
END
板凳
天尝地酒 [专家分:870] 发布于 2007-08-17 08:22:00
2 【对应关系】
给定两个长度相同的字符串A$和B$,如果A$中的一字符与B$中的一字符出现次数相同,则说此二字符是对应的;如果A$中所有字符分别对应于B$中所有字符,则说二字符串之间存在一个对应关系;要求算出两串之间存在的所有对应关系的个数(若无对应关系,则输出为0)。
例如: A$=”abac”, B$=”3132”,那么它们之间存在2个对应关系, 分别是:
a 3 a 3
b 1 b 2
c 2 c 1
【输入格式】键盘输入。只有两行,每行给出一个字符串,每个字符串全部由小写字母或数字组成,串的长度不超过20,而且串中最多出现10种不同字符。不必对输入做正确性检查。
【输出格式】一个正整数,表示输入字符串之间存在对应关系的个数。
【样例】
输入: 输出
abad 2
1231
CLS
DO
INPUT y
IF y = 0 THEN EXIT DO
OPEN "F:\05江苏\T2\JS2" + LTRIM$(STR$(y MOD 10)) + ".in" FOR INPUT AS #1
INPUT #1, a$
INPUT #1, b$
REDIM a(20), a$(10), b(20), b$(10), sa(20), sb(20)
CLOSE
ia = 0
l = LEN(a$)
FOR i = 1 TO l
aa$ = MID$(a$, i, 1)
FOR j = 1 TO ia
IF aa$ = a$(j) THEN EXIT FOR
NEXT j
IF j = ia + 1 THEN ia = ia + 1: a$(ia) = aa$: a(ia) = 1 ELSE a(j) = a(j) + 1
NEXT i
'FOR i = 1 TO ia: PRINT a$(i); "=====>"; a(i): NEXT i: PRINT
ib = 0
FOR i = 1 TO l
bb$ = MID$(b$, i, 1)
FOR j = 1 TO ib
IF bb$ = b$(j) THEN EXIT FOR
NEXT j
IF j = ib + 1 THEN ib = ib + 1: b$(ib) = bb$: b(ib) = 1 ELSE b(j) = b(j) + 1
NEXT i
'FOR i = 1 TO ib: PRINT b$(i); "=====>"; b(i): NEXT i: PRINT
FOR i = 1 TO ia
sa(a(i)) = sa(a(i)) + 1
IF ma < a(i) THEN ma = a(i)
NEXT i
FOR i = 1 TO ib
sb(b(i)) = sb(b(i)) + 1
IF mb < b(i) THEN mb = b(i)
NEXT i
s = 1
IF ma > mb THEN mi = ma ELSE mi = mb
FOR k = 1 TO mi
IF sa(k) <> sb(k) THEN PRINT "0": GOTO 1
IF sa(k) = 0 THEN 10
p = 1
FOR t = 1 TO sa(k): p = p * t: NEXT t
s = s * p
10 NEXT k
PRINT s
1 : LOOP
END
3 楼
天尝地酒 [专家分:870] 发布于 2007-08-17 08:26:00
3 给出一个正整数n(1≤N≤1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
例 如:输入 23 化为二进制数为: 0000010111
因为1的个数是4个,在最高位前加0,得到:00000010111
输出:0H,1H,7H
再例如:输入 453 化为二进制数为: 0111000101
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
输出:5H,CH,5H
【输入格式】键盘输入。一个正整数n。
【输出格式】根据形成的11位二进制数,用3个十六进制数输出。
【样例】
输入: 输出
453 5H,CH,5H
CLS
INPUT n
FOR i = 1 TO 10
Y = n MOD 2: n = n \ 2: Y$ = LTRIM$(STR$(Y)) + Y$
IF Y = 1 THEN h = h + 1
NEXT i
IF h MOD 2 <> 0 THEN Y$ = "1" + Y$ ELSE Y$ = "0" + Y$
A$ = MID$(Y$, 1, 3): GOSUB 20: PRINT X$; "H"; ",";
A$ = MID$(Y$, 4, 4): GOSUB 20: PRINT X$; "H"; ",";
A$ = MID$(Y$, 8, 4): GOSUB 20: PRINT X$; "H"
END
20 X = 0: X$ = ""
FOR i = LEN(A$) TO 1 STEP -1
Q$ = MID$(A$, LEN(A$) + 1 - i, 1)
IF ASC(Q$) > 57 THEN B = ASC(Q$) - 55 ELSE B = VAL(Q$)
X = X + B * 2 ^ (i - 1)
NEXT i
DO
Y = X MOD 16
X = X \ 16
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
LOOP UNTIL X = 0
RETURN
4 楼
天尝地酒 [专家分:870] 发布于 2007-08-17 08:27:00
4 【走迷宫】
小明与许多同学一起参加了今年的“信息与未来”小学生夏令营活动。夏令营的组织者设计安排了许多有趣的活动,走迷宫就是其中的一项。
迷宫由N*N个方格组成,每个方格均被组织者事先标上了“0”或“1”(左上角第一个方格和右下角最后一个方格一定是“0”)。当你进入左上角的第一个方格中时,看到相邻的方格是“0”时则可以进入,而如果是“1”时则表示此路不通。
小明被告之:从迷宫的左上角第一个方格的入口处准备进入时,你可得到一个记有N*N分值的记分表,每经过一个标有“0”的方格,记分表将自动扣去1分,当走到右下角最后一个方格的出口处时,将显示你手中的记分表剩余的分值。
夏令营的组织者将只奖励所有参加此项活动中,记分表剩余的分值最多的营员。
【输入格式】你应当从指定的文件中读取相关数据。
每个文件的第一行是一个整数N(3≤N≤40),接下来有N行,每行均有N个由0 和1组成的数据
【输出格式】输出至屏幕,一个整数(记分表剩余的分值)
【样例】
输入 输出
4 9
0011
1000
0001
1000
DECLARE SUB Try (P, X, Y)
CLS
OPEN "F:\05江苏\IN3.IN" FOR INPUT AS #1
INPUT #1, N
DIM SHARED X(500), Y(500), A(N, N), v(4, 2), x0, y0, XE, YE
CLS
FOR I = 1 TO N
INPUT #1, M$
FOR J = 1 TO N
A(I, J) = VAL(MID$(M$, J, 1))
NEXT J, I
FOR I = 1 TO 4: FOR J = 1 TO 2
READ v(I, J)
NEXT J, I: DATA 1,0,0,1,0,-1,-1,0
x0 = 1: y0 = 1: P = 1: X(P) = x0: Y(P) = y0: XE = N: YE = N
Try P, x0, y0
END
SUB Try (P, x1, y1)
I = 0
DO
I = I + 1: X = x1 + v(I, 1): Y = y1 + v(I, 2)
IF X >= 1 AND X <= XE AND Y >= 1 AND Y <= YE THEN
IF A(X, Y) = 0 THEN
X(P + 1) = X: Y(P + 1) = Y: A(X, Y) = 2
IF X = XE AND Y = YE THEN
PRINT XE * YE - (P + 1): END
ELSE
Try P + 1, X, Y
END IF
END IF
END IF
LOOP UNTIL I = 4
END SUB
我来回复