运算符的放置(Placing the Ops)
   



  在一个古老的难题中,给你一些数字和一些运算符,要你在这些数字中放入运算符使得它形成一个具有特定值的表达式。这道题与那个题是不同的。

  在这个问题中,给定你一个数字个数不超过10(数字不一定唯一)且包含一个等号的数字序列,以及至少一个最多4个的整数运算符('+','-','*','/')。你的程序将这些运算符逐一地插入到合适的两个数字之间,是从使用这些运算符中任意某些运算符(每一种运算符可不断使用),插入到等号两边数字序列中,使得这个等式在数学上是成立的。假设所有的运算符运算优先级相同,且运算时都是从左到右。等号的两边至少有一个数字。

  例如,给你的序列为:'957=52',运算符为:'+'和'*',则成立的等式为'9*5+7=52'。又如:给定序列为:'135=642',运算符为:'+','+','*'和'*',则成立的等式为:'1+3*5=6+4*2',等号两边的值为20。

  这里'/'运算是一个整除运算,显示除数不能为0。表达式中没有长度超过6的值。每个运算符只被用一次。数字出现的顺序与等号的位置都不能被改变。

  输入

  输入包含多组测试数据,每一组数据有两行,第一行为包含等号的数字序列(无前导空格)。第二行包含将要用到的运算符。运算符没有以特殊的顺序给出。最后一组测试数据之后的一行仅包含一个"$"号。

  输出

  对于每种测试数据,程序要输出测试数据号(如case 1:)和正确的算术等式。如果有多解,则输出其中一种即可,若无解输出"NO SOLUTION"。

  Sample Input

  957=52
  +*
  123=456
  ++-*
  135=642
  ++**
  8916=95
  //+
  12=34
  +-
  $

  Expected Output

  Case 1: 9*5+7=52
  Case 2: 1*2+3=4-5+6
  Case 3: 1+3*5=6+4*2
  Case 4: 8+9/16=9/5
  Case 5: NO SOLUTION
 

   

 
网站导航 | 关于曙光 | 联系我们 | 请提意见
Copyright © FuJian Sunshine Educational Info. Co.,Ltd.
福建曙光教育资讯有限公司 版权所有