每日一题-Day29-工人生产之和


题目

每位职工随着对加工流程的熟悉和经验增加,日产量将会不断上升

假设第一天每位员工只能生产1个单位,接下来两天每天生产两个单位,再接下来三天每天生产三个单位

示例:

输入:1
输出:1

输入:2
输出:3

输入:3
输出:5

输入:4
输出:8

解题思路

将生产总数分割成一个个生产能力范围的累加和,如第一天生产一个单位,即1x1,第二三天生产两个单位,即2x2,当存在不完整的情况时,则加上剩余天数生产之和

package com.company;

import java.util.Scanner;

/**
 * @author chenweitian
 */
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int length = getN(n);
        //完整生产天数生产总和
        int result = 0;
        //完整生产天数之和
        int sum = 0;
        for (int i = 0; i <= length; i++) {
            result += i*i;
            sum += i;
        }
        //剩余天数生产总和
        int temp = (n - sum) * (length + 1);
        System.out.println(result+temp);
        sc.close();
    }

    /**
     * 完整生产天数
     *
     * @param n
     * @return int
     * @author weitian.chen
     * @date 2021/11/18
     */
    public static int getN(int n) {
        int i = 0;
        int sum = 0;
        while (sum <= n) {
            sum += i;
            i++;
        }
        return i-2;
    }
}

来源:朋友