回 帖 发 新 帖 刷新版面

主题:求助

马上就要复赛了,大家能帮我找找江苏省2002年-2006年的复赛试题吗?
另外还要程序。
找到1年的加20分。
谢谢!

回复列表 (共4个回复)

沙发

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


板凳

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 楼

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 楼

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册