There are multiple test cases. The first line of input contains an integer T (1≤T≤106), indicating the number of test cases. For each test case:
The first line contains an integer n (1≤n≤106).
-1
-1
1
题目意思:给你n个数,要你找出X,Y,Z, X+Y+Z = n,并且 X,Y, Z 是 n 的一个因子(我当时不认识“ | ”这个符号,想了半天), 输出X * Y * Z 的最大值。
题解:X + Y + Z = n 两边同时除以n, 得到 x/n + y/n + z/n = 1,分别设为 a,b,c; 1/3 + 1/3 +1/3 = 1 1/2 + 1/3+ 1/6 1/2 + 1/4 + 1/4 = 1。另外套for循环 打表发现 必须是3 和 4的倍数才符合题意。 所以就是 1 3 两种情况满足题意。
1 #include <iostream>
2 using namespace std;
3 typedef long long ll;
4
5 int main(){
6 int T;
7 scanf("%d",&T);
8 while(T--){
9 ll n;
10 ll max = 0;
11 scanf("%lld",&n);
12 if(n%3 == 0){
13 max = n*n*n/27;cout<<max<<endl;
14 }
15
16 else if(n%4 == 0){
17 max = n*n*n/32;cout<<max<<endl;
18 }
19
20 else
21 cout<<"-1"<<endl;
22
23 }
24 return 0;
25 }