0
我需要我提出的粗略解決方案背後的邏輯/想法。給出「N」發現p和q使得p + q = N和p * q是最大的
的問題是:
鑑於N,其中1<=N<=1000000
現在我需要找到兩個數p和q,使得p + q = N && p * q = maximum.
我選擇使用此(((N+1)/2)*((N/2)));
基本上給了我最大的產品,最小的總和。但我對這種邏輯的證明感興趣。
任何幫助或建議?
#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)));
}
這不是一個數學問題,不是一個編程問題? –
這個問題似乎是脫離主題,因爲它是一個數學問題,而不是編程問題。 – hivert
雖然問題可能包含代碼,但問題的本質似乎是無關緊要的,因爲它涉及[math.se]。 – Dukeling