小学数学题一则1…9=100

1 2 3 4 5 6 7 8 9=100 填入+=*/使得结果=100 不用括号

好像没有特别好的通用解法,编程穷举了一下

int Algorithm_100()
{
 int i,j,n,nRet=0;
 float fnum[32],fres;
 TCHAR szOperate[]="+-x/",szOper[10]={0},szText[256]={0};
 for(i=0; i<65536; i++)//8个运算符,4种可能,8的4次方=65536
 {
  n = 0;
  fnum[0] = 1;
  for(j=0; j<8; j++)
  {
   szOper[j] = szOperate[(i>>(j*2))&3];
   if(szOper[j] == 'x')
   {
    fnum[n] *= (j+2);
   } else if(szOper[j] == '/') // /
   {
    fnum[n] /= (j+2);
   } else // + -
   {
    fnum[++n] = szOper[j];
    fnum[++n] = j+2;
   }
  }
  fres = fnum[0];
  // cac result
  for(j=1; j<n; j+=2)
  {
   if(fnum[j] == '+') //+
    fres += fnum[j+1];
   else
    fres -= fnum[j+1];
  }
  if(fres == 100)
  {
   for(j=0; j<9; j++)
   {
    szText[j*2+0] = '1'+j;
    szText[j*2+1] = szOper[j];
   }
   TRACE(szText);// 输出结果
   nRet++;
  }
 }
 return nRet;
}

结果如下:

1x2x3x4+5+6+7x8+9
1-2+3x4x5+6x7+8-9
1-2+3x4x5-6+7x8-9
1+2+3+4+5+6+7+8x9 最容易想到的一个
1x2x3+4+5+6+7+8x9
1-2x3+4x5+6+7+8x9
1+2x3+4x5-6+7+8x9
1-2x3-4+5x6+7+8x9
1+2-3x4+5x6+7+8x9
1+2x3x4x5/6+7+8x9
1x2x3x4+5+6-7+8x9
1-2x3-4-5+6x7+8x9
1+2-3x4-5+6x7+8x9
1+2+3-4x5+6x7+8x9
1x2x3-4x5+6x7+8x9

转载于:https://www.cnblogs.com/chaos77/p/6034429.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值