Math 给定;";查找p&;q使得p+;q=N,p*q为最大值

Math 给定;";查找p&;q使得p+;q=N,p*q为最大值,math,Math,我需要我提出的粗略解决方案背后的逻辑/想法 问题是: 给定N,其中1Let 然后: 由于f'(p)

我需要我提出的粗略解决方案背后的逻辑/想法

问题是:

给定N,其中
1Let

然后:

由于
f'(p)<0
,简单地求解
f'(p)=0
就得到了一个局部极大值

您还需要测试端点
f(0)
f(N)
,但这两个端点的值都为零,因此我们的最大值是全局最大值

注:这基本上是说,在一定周长的所有矩形中,正方形的面积最大。

然后:

由于
f'(p)<0
,简单地求解
f'(p)=0
就得到了一个局部极大值

您还需要测试端点
f(0)
f(N)
,但这两个端点的值都为零,因此我们的最大值是全局最大值

注:这基本上是说,在一定周长的所有矩形中,正方形的面积最大。

然后:

由于
f'(p)<0
,简单地求解
f'(p)=0
就得到了一个局部极大值

您还需要测试端点
f(0)
f(N)
,但这两个端点的值都为零,因此我们的最大值是全局最大值

注:这基本上是说,在一定周长的所有矩形中,正方形的面积最大。

然后:

由于
f'(p)<0
,简单地求解
f'(p)=0
就得到了一个局部极大值

您还需要测试端点
f(0)
f(N)
,但这两个端点的值都为零,因此我们的最大值是全局最大值



注:这基本上是说,在一定周长的所有矩形中,正方形的面积最大。

这不是一个数学问题,不是一个编程问题吗?这个问题似乎离题了,因为它是一个数学问题,不是一个编程问题。虽然这个问题可能包含代码,这个问题的本质似乎是离题的,因为它是关于。提示:计算出
p*(N-p)
p
的区别,然后找到它的根,然后你会找到局部最大值和最小值的解。这不是一个数学问题吗,非编程问题?此问题似乎离题,因为它是一个数学问题,而不是编程问题。虽然问题可能包含代码,但问题的本质似乎离题,因为它是关于。提示:计算出
p*(N-p)
p
的区别,然后找到它的根,然后你会找到局部最大值和最小值将给你答案的位置。这不是一个数学问题,不是一个编程问题吗?这个问题似乎离题了,因为它是一个数学问题,不是一个编程问题。虽然这个问题可能包含代码,这个问题的本质似乎是离题的,因为它是关于。提示:计算出
p*(N-p)
p
的区别,然后找到它的根,然后你会找到局部最大值和最小值的解。这不是一个数学问题吗,非编程问题?此问题似乎离题,因为它是一个数学问题,而不是编程问题。虽然问题可能包含代码,但问题的本质似乎离题,因为它是关于。提示:计算出
p*(N-p)
p
的区别,然后找到它的根,然后你会找到局部的最大值和最小值,会给你答案。
#include<stdio.h>

typedef unsigned long uint;
unsigned long calc(uint);

int main(void) {
    short i = 0;
    uint k = 0;
    scanf("%i", &i);
    while(i--) {
        scanf("%lu", &k);
        printf("%lu\n", calc(k));
    }
    return 0;
}

uint calc(uint k){
    return (((k+1)/2)*((k/2)));
}
f(p) = p * (N - p) = p * N - p ^ 2
f'(p) = N - 2 * p
f''(p) = - 2
When f'(p) = 0, 
p = N / 2
=> q = N / 2