按照题目的意思,1的放置位置有两处,为了使结果最大就要使1的数量拆分为两个,使得这两个数的乘积最大。
因:和相同的数相乘,差最大时积最小,差最小时积最大。
如:1+5=2+4=3+3,积最大:3 * 3=9,积最小:1 * 5=51+4+6=3+4+4=1+2+8,积最大:3 * 4 * 4=48,积最小:1 * 4 * 6=24
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n,m,k; int t; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&m,&k); printf("%lld\n",(n-n/2)*(n/2)*m*k); } return 0; }