6298 Maximum Multiple
看上去十分难,但是你会发现很容易出现-1,所以不妨打表找规律,表一打出来就完事了,发现只有在n % 4 == 0 || n % 3 == 0的情况下才有解,最大解是多少呢?
对于n % 4 == 0的情况:
M
A
X
=
2
∗
(
n
4
)
3
MAX=2 * (\frac{n}{4})^3
MAX=2∗(4n)3
对于n % 3 == 0的情况:
M
A
X
=
(
n
3
)
3
MAX=(\frac{n}{3})^3
MAX=(3n)3
所以说要勤打表,打表出省一。
#include<bits/stdc++.h>
using namespace std;
int T;
long long n;
int main(){
scanf("%d",&T);
while (T--){
scanf("%lld",&n);
if (!(n%3)){
long long tmp=n/3;
printf("%lld\n",tmp*tmp*tmp);
}else if (!(n%4)){
long long tmp=n/4;
printf("%lld\n",tmp*tmp*2*tmp);
}else printf("-1\n");
}
return 0;
}