回 帖 发 新 帖 刷新版面

主题:妈呀!咋办呀!!!!

求分数和的最小值。
      给出一个数字字符串,即字符串中的字符全部为数字,
      并以字符“$”结束(字符“$”本身不是数字符,仅作为结束符号)。
    例如:"12$","2135$","312456$",……
      并设字符串的长度L<=8(包括“$”)。
      今将数字字符串分成三个部分(分法为任意的),例如:
      "31245$"可分为"3","124","56";
                或者"31","24","56",……
      从上例可看出,当数字串给出之后,分成三部分的分法是许多的(每一部分不能为空),
      对每一种分法,可以得到三个数和三个分数。例如:
      分法"3","124","56"对应的三个数为3,124,56 
                              对应分数为:1/3,1/124,1/56。
      分法"31","24","56"对应的三个数为31,24,56
                              对应分数为:1/31,1/24,1/56。
      程序要求:从键盘输入一个数字串(以“$”作为结束符号)。
                找出一种分法,使得到的三个分数的和S为最小,输出S的值(精确到小数点后的第6位)。
              若给出的数字串中,非0的字符少于3个,则此时不能组成三个数,输出一个“ERROR”。
                例如:"12$","100100$",……
[em8][em8][em8][em10][em10][em18][em18][em18]

回复列表 (共10个回复)

沙发

CLS
INPUT N$
N=LEN(N$)-1
FOR I=1 TO N
  IF MID$(N$,I,1)<>"0" THEN P=P+1
NEXT I
MIN=4
IF P<3 THEN ?"ERROR":END
IF P>=3 THEN 
  N$=MID$(N$,1,N)
  FOR I=1 TO N-2
    FOR J=I+1 TO N-1
      A=VAL(MID$(N$,1,I))
      B=VAL(MID$(N$,I+1,J-I))
      C=VAL(MID$(N$,J+1,N-J))
      IF A*B*C<>0 THEN 
      S=1/A+1/B+1/C:IF S<MIN THEN MIN=S
      END IF
NEXT J,I
?USING"#.######";MIN
END IF
END
[em1][em16]

板凳

CLS
INPUT S$
N = LEN(S$) - 1
FOR I = 1 TO N
IF MID$(S$, I, 1) <> "0" THEN P = P + 1
NEXT I
MIN = 4
IF P < 3 THEN PRINT "ERROR!": END
S$ = MID$(S$, 1, N)
FOR I = 1 TO N - 2: FOR J = I + 1 TO N - 1
S1 = VAL(MID$(S$, 1, I))
S2 = VAL(MID$(S$, I + 1, J - I))
S3 = VAL(MID$(S$, J + 1, N - J))
IF S1 * S2 * S3 <> 0 THEN
 S = 1 / S1 + 1 / S2 + 1 / S3
 IF S < MIN THEN MIN = S
 END IF
NEXT J, I
PRINT USING "#.######"; MIN
END

3 楼

CLS
INPUT S$
N = LEN(S$) - 1
FOR I = 1 TO N
IF MID$(S$, I, 1) <> "0" THEN P = P + 1
NEXT I
MIN = 4
IF P < 3 THEN PRINT "ERROR!": END
S$ = MID$(S$, 1, N)
FOR I = 1 TO N - 2: FOR J = I + 1 TO N - 1
S1 = VAL(MID$(S$, 1, I))
S2 = VAL(MID$(S$, I + 1, J - I))
S3 = VAL(MID$(S$, J + 1, N - J))
IF S1 * S2 * S3 <> 0 THEN
 S = 1 / S1 + 1 / S2 + 1 / S3
 IF S < MIN THEN MIN = S
 END IF
NEXT J, I
PRINT USING "#.######"; MIN
END

4 楼

CLS
INPUT N$
N=LEN(N$)-1
FOR I=1 TO N
  IF MID$(N$,I,1)<>"0" THEN P=P+1
NEXT I
MIN=4
IF P<3 THEN ?"ERROR":END
IF P>=3 THEN 
  N$=MID$(N$,1,N)
  FOR I=1 TO N-2
    FOR J=I+1 TO N-1
      A=VAL(MID$(N$,1,I))
      B=VAL(MID$(N$,I+1,J-I))
      C=VAL(MID$(N$,J+1,N-J))
      IF A*B*C<>0 THEN 
      S=1/A+1/B+1/C:IF S<MIN THEN MIN=S
      END IF
NEXT J,I
?USING"#.######";MIN
END IF
END

5 楼

CLS
INPUT N$
N=LEN(N$)-1
FOR I=1 TO N
  IF MID$(N$,I,1)<>"0" THEN P=P+1
NEXT I
MIN=4
IF P<3 THEN ?"ERROR":END
IF P>=3 THEN 
  N$=MID$(N$,1,N)
  FOR I=1 TO N-2
    FOR J=I+1 TO N-1
      A=VAL(MID$(N$,1,I))
      B=VAL(MID$(N$,I+1,J-I))
      C=VAL(MID$(N$,J+1,N-J))
      IF A*B*C<>0 THEN 
      S=1/A+1/B+1/C:IF S<MIN THEN MIN=S
      END IF
NEXT J,I
?USING"#.######";MIN
END IF
END

6 楼

CLS
INPUT S$
N = LEN(S$) - 1
FOR I = 1 TO N
IF MID$(S$, I, 1) <> "0" THEN P = P + 1
NEXT I
MIN = 4
IF P < 3 THEN PRINT "ERROR!": END
S$ = MID$(S$, 1, N)
FOR I = 1 TO N - 2: FOR J = I + 1 TO N - 1
S1 = VAL(MID$(S$, 1, I))
S2 = VAL(MID$(S$, I + 1, J - I))
S3 = VAL(MID$(S$, J + 1, N - J))
IF S1 * S2 * S3 <> 0 THEN
 S = 1 / S1 + 1 / S2 + 1 / S3
 IF S < MIN THEN MIN = S
 END IF
NEXT J, I
PRINT USING "#.######"; MIN
END[/quote]

7 楼

V2战警2和QB.N纯属抄袭!!!!
气愤!!!

8 楼

CLS
INPUT N$
N=LEN(N$)-1
FOR I=1 TO N
  IF MID$(N$,I,1)<>"0" THEN K=K+1
NEXT I
MIN=4
IF K<3 THEN ?"ERROR":END
IF K>=3 THEN 
  N$=MID$(N$,1,N)
  FOR I=1 TO N-2
    FOR J=I+1 TO N-1
      A=VAL(MID$(N$,1,I))
      B=VAL(MID$(N$,I+1,J-I))
      C=VAL(MID$(N$,J+1,N-J))
      IF A*B*C<>0 THEN 
      S=1/A+1/B+1/C:IF S<MIN THEN MIN=S
      END IF
NEXT J,I
PRINT USING"#.######";MIN
END IF
END

9 楼

抄袭!!!
气愤!!!

10 楼

CLS
INPUT S$
N = LEN(S$) - 1
FOR I = 1 TO N
IF MID$(S$, I, 1) <> "0" THEN P = P + 1
NEXT I
MIN = 4
IF P < 3 THEN PRINT "ERROR!": END
S$ = MID$(S$, 1, N)
FOR I = 1 TO N - 2: FOR J = I + 1 TO N - 1
S1 = VAL(MID$(S$, 1, I))
S2 = VAL(MID$(S$, I + 1, J - I))
S3 = VAL(MID$(S$, J + 1, N - J))
IF S1 * S2 * S3 <> 0 THEN
 S = 1 / S1 + 1 / S2 + 1 / S3
 IF S < MIN THEN MIN = S
 END IF
NEXT J, I
PRINT USING "#.######"; MIN
END

我来回复

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