有1、2、4、8四个数,1-15之间的数都可以由它们相加来得到。如:7=1+2+4、4=4 5=1+4 。有没有一个方法能够得到如下,我有一个数13,就知道它是1+4+8。

解决方案 »

  1.   

    function Convert(A: Word): string;
    var
      Exp: Integer;
      I : Integer;
    begin
      Exp := 1;
      repeat
        if Odd(A) then
        begin
          if Result <> '' then Result := Result + ' + ';
          Result := Result + IntToStr(Exp);
        end;
        A := A shr 1;
        Exp := Exp * 2;
      until A = 0;
    end;
      

  2.   

    用case行吗?给出固定的组合,输入你向要的数字就可得到了!