黑马程序员技术交流社区

标题: 这个数学题用java怎么做 [打印本页]

作者: 精诚所至    时间: 2017-4-9 20:43
标题: 这个数学题用java怎么做
10个兄弟分100两银子,长兄最多,依次减少相同数目。现知第吧兄弟分得6两,问相邻两兄弟相差多少

作者: javaeeheima    时间: 2017-4-9 23:40
public class Test05{
        public static void main(String[] args){
                /*
                10个兄弟分100两银子,长兄最多,依次减少相同数目.现知第八个兄弟分得六两,问相邻两兄弟相差多少.
                */
                int sum=100;
                for (int i=1;i<100;i++){
                        for(int j=0;j<7;j++){
                                sum=sum-i;
                        }
                        if((sum=3*i)==18){
                                System.out.println("相邻两兄弟相差:"+i);
                                break;
                        }
                        else{
                                        sum=100;
                                }
                }
        }
}

作者: javaeeheima    时间: 2017-4-9 23:42
搞错了,怎么删不掉呢

作者: Damonlalala    时间: 2017-4-10 00:49
这题结果是小数,如果是整数比较好做一些
作者: Hp_Yx    时间: 2017-4-10 00:53
不知道

作者: 小T    时间: 2017-4-10 01:00
楼上的看不懂,我比较笨啦!
我初步看了下觉得有俩种方法可能可以解决吧!一,穷举,订一个数组装兄弟们的钱,因为知道了一个人的钱开始用循环假设差额,这样就可以初始化整个数组,然后就求数组和如果等于100那这个假设的差额数就刚好正确,就这样找到,在差额为整数的时候运算不太大时估计能解决。
二,这个是有规律的你就先假设差额是x,然后列出所有兄弟们的钱想加等于100然后反求x,就一个一元方程式,找到规律了,就自行抽象成方法,可以加些自己觉得有用的功能进去,这个方式可以求出小数

作者: zeng1002    时间: 2017-4-10 01:04
围观群众看看大神们的杰作

作者: Damonlalala    时间: 2017-4-10 01:05
public class Demo02 {
        public static void main(String[] args) {
               
                //所有值乘以10倍
                for (int i = 10; i < 100; i++) {
                        int sum = 0;
                        int num = 60 - i - i;
                        for (int j = 0; j < 10; j++) {
                                sum +=num;
                                num +=i;
                        }
                        if(sum == 1000){
                                //结果要除以10;
                                System.out.println("差值是"+(double)i/10);
                        }
                }

        }

}




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