题解:CF2284A1 15K4JR3B (Easy Version)

· · 题解

题目传送机

思路

经过思考,不难发现,我们可以先固定一点,其余两点,一点向上移动,另一点向右移动,使三点构成直角三角形。

因为直角三角形所需的移动次数是最少的,且在相同的移动次数中,直角三角形的面积最大。

接下来我们就要考虑如何使这个直角三角形的面积最大了。

由于我们最终要求的是这个直角三角形面积的两倍,所以我们可以将直角三角形的两倍看作一个矩形,即我们最终要求的是这个矩形的最大面积。

要使矩形的面积最大,只需让这个矩形的长和宽尽量接近即可。

所以我们只需使这个矩形的一边为总移动次数的一半,另一边为剩余的移动次数即可。

代码就比较简单了,按照上文所说的进行计算即可。

代码

#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,e,w;
int main(){
    cin>>w;
    while(w--){
        cin>>a;
        b=a/2;
        c=a-b;
        cout<<b*c<<"\n";
    }
    return 0;
}