- 论坛徽章:
- 0
|
原帖由 liaohuangen 于 2009-4-7 21:22 发表 ![]()
我觉得这个方法最好!!!虽然有点投机...但效率最高....
你不是要1:2:3吗???
可以这样:
(1:2:3)*1=(1:2:3)
(1:2:3)*2=(2:4:6)
(1:2:3)*3=(3:6:9)
(1:2:3)*4=(4:8:12)
在实际中真要遇到这样的情况...我想这 ...
确实是个思路,(1:2:3)*n选择n在100~300之间,设C(m,n)表示从n个数里取出m个数的所有取法,则1,... ,9这些数字了分成三组的分法有:C(3,9)*C(3,6)*C(3,3) = 84 , 但n在100~300之间,所以,n 的取法共有:2*C(2,8 ) = 14 ,即百位数是1或2的取法,同时3位数中不能有重复的位数,设百位数为k(k = 1 or 2) , 十位数为 x ,个位数为 y , 则:
(k*100+x*10+y) = n ,and,
(2x /10)/k != 1 ,
(2x%10)/k != 1 ,
(3x /10)/k != 1 ,
(3x%10)/k != 1 ,
按这个约束从14种取法中找到x ,确定x后再按下面约束找到y ,
(2y /10)/k != 1 ,
(2y%10)/k != 1 ,
(3y /10)/k != 1 ,
(3y%10)/k != 1 ,
(2y /10)/x != 1 ,
(2y%10)/x != 1 ,
(3y /10)/x != 1 ,
(3y%10)/x != 1 ,(想了想,(3y%10)% != 0改成(3y%10)/x != 1,上面如同)
如此多的约束,算下来就几个取法了,这种题目用程序来算已经没有意义,可以把问题扩展出去,但我还是觉得这样做只是浪费时间,如果没有遇到实际情况,这个没有多少研究的意义...
[ 本帖最后由 qsc555 于 2009-4-28 10:06 编辑 ] |
|