6298 Maximum Multiple
看上去十分难,但是你会发现很容易出现-1,所以不妨打表找规律,表一打出来就完事了,发现只有在n % 4 == 0 || n % 3 == 0的情况下才有解,最大解是多少呢?
对于n % 4 == 0的情况:MAX=2∗(n4)3MAX=2 * (\frac{n}{4})^3MAX=2∗(4n)3
对于n % 3 == 0的情况:MAX=(n3)3MAX=(\frac{n}{3})^3MAX=(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;
}

本文解析了6298MaximumMultiple问题,通过观察发现仅当n为3或4的倍数时有解。文章给出了两种情况下的最大解公式,并提供了C++代码实现。
501

被折叠的 条评论
为什么被折叠?



