黑马程序员技术交流社区

标题: 几个月前自己做的一个题,有关在java中进行分数计算的题 [打印本页]

作者: 张立江    时间: 2012-6-29 00:32
标题: 几个月前自己做的一个题,有关在java中进行分数计算的题
题目很简单
有人想买几套餐具,到餐具店看了后,发现自己带的钱可以买21把叉子和21把勺子,或者28把小刀。
如果他买的叉子,勺子,小刀数量不统一,就无法配成套,
所以他必须买同样多的叉子,勺子,小刀,并且正好将身上的钱用完。如果你是这个人,你该怎么办?
请用java编写程序来计算.



作者: 李伟    时间: 2012-6-29 01:59
/*21假设这个人带的总钱数是21*28,则每把叉子和勺子的总钱数共21*28/21=28, 每把小刀的钱数是21*28/28=21;
再假设买相同数量 x 把的叉子、勺子和小刀,如满足条件则21*x+28*x=21*28,有这个等式看出x肯定大于1且小于21.
可以用for循环来实现JAVA代码*/
class ShopDemo
{
        public static void main(String[] args)
        {
                for(int x=1;x<21;x++)
                {
                   if(((21*x)+(28*x))==21*28)
                           System.out.println("各买:"+x);
                }
               
        }
}

得出结果是:各买:12
作者: 胡文杰    时间: 2012-6-29 02:32
把刀和叉看成一个整体 当成一样事物来看待。
一个刀可以买0.75个叉又或者3/4个叉,所以刀的个数必须是4的倍数,所以只能是4,8,12,16,20.又因为总共可以买刀28,所以刀的个数必须小于14,所以到的取值范围就出来了4,8,12 有因为它们个数一样,所以x+x*3/4=21  代码可以这样写,定义一个整数X代表叉,那么0<x<21; 然后在用循环来取4的倍数存进一个list集合,在定义一个标记Boolean flag   循环遍历list集合中的数字赋值给X计算X+X*3/4==21 true的话,结束循环并返回X




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2