手机生产:第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件

手机产能

    • 题目描述
    • 题目分析

题目描述

假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件,以此类推,请编程计算出第n天总共可以量产的手机数量。

题目分析

1:刚看到题目时,第一个念头闪过的是等差数列,即:

第1轮. 1
第2轮. 2、3
第3轮. 4、5、6
第4轮. 7、8、9、10
每一轮的日产量均与当前所在轮次相同,因此自然想到了确定数字n所在的轮次。通过分析可得每一轮的前n项和n*(n+1)/2均为本轮的最后一个数字,所以会想到去求大于数字n和小于数字n的前n项和来确定该数字所在轮次。事实证明本方法很难实现,比较麻烦。
2:想了一会后,突然想到前n项和的公式主要是为了解决数字运算时的循环问题。但是使用程序则完全不存在循环运算的困难。因此尝试使用几个变量对循环过程中出现的数字进行定义,并通过while和for循环来模拟天数的增加以及每一轮生产总量的叠加,具体思路看代码:

 public void test2(){
     
        int firstNum = 5;
        int day=1;//天数
        int num = 1;//日产量
        int num1 = 1;//当前日产量生产天数
        int sum = 0;
        while(day<=firstNum){
     
            for(int i=1;i<=num1;i++){
     
                sum = sum + num;
                day++;
                if(day>firstNum){
     
                    break;
                }
            }
            num++;
            num1++;
        }
        System.out.println(sum);
    }

如上即可得到正确的解决方法。

你可能感兴趣的:(浅学算法,java)