回 帖 发 新 帖 刷新版面

主题:求助:关于填写加减运算的问题!

请哪位高手帮我解决一下这个程序!谢谢!!

下面有一个式子,左边是123456789,九个不为零的数字全出场,从小到大按自然增长顺序排列;右边就是100。
怎样在左边插入一些加号和减号,使左边的运算结果等于右边?
如:12+3-4+5+67+8+9=100
123+4-5+67-89=100
123-4-5-6-7+8-9=100

回复列表 (共7个回复)

沙发

想一想实际求解当中你是怎么想的,
把你的想法转成QB的实现过程就可以了。

板凳

DEFLNG A-Z
DIM s AS STRING
INPUT num
FOR n = 0 TO 3 ^ 8 - 1
  s = "1"
  a = n
  b = 1
  m = 0
  FOR i = 2 TO 9
    c = a MOD 3
    a = a / 3
    SELECT CASE c
      CASE 0
        IF b >= 0 THEN
          b = b * 10 + i
        ELSE
          b = b * 10 - i
        END IF
        s = s + CHR$(48 + i)
      CASE 1
        m = m + b
        b = i
        s = s + "+" + CHR$(48 + i)
      CASE 2
        m = m + b
        b = -i
        s = s + "-" + CHR$(48 + i)
      CASE ELSE
    END SELECT
  NEXT
  m = m + b
  IF m = num THEN PRINT s; "="; num
NEXT

3 楼

[em54]太可怕了[em54]吓死人了[em54]狂汗[em54]我要一头撞死了[em54]倒[em54]

4 楼

看明白了.
9个数最多8个符号
相当于设置三进制的数,
检查每一位的标志,
为0无符号
为1加号
为2减号

这人也想得出来,
我只做过二进制位标志的,
这归隐了那么久的高手(怕都已经跑C去很久了)竟然拿三进制来做,
狂倒.狂汗.

5 楼

这样看来,那些加减乘除不是很简单?
设置四进制五进制标志位不就行了?
(哦,还要考虑优先)

6 楼

还有人认得我这个菜鸟啊......
= =!

7 楼

这都能想的到,小弟佩服,佩服!!

谢谢各位高手!

我来回复

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