Maximum Multiple
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1794 Accepted Submission(s): 769
Problem Description
Given an integer n, Chiaki would like to find three positive integers x, y and z such that: n=x+y+z, x∣n, y∣n, z∣n and xyz is maximum.
Input
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).
Output
For each test case, output an integer denoting the maximum xyz. If there no such integers, output −1 instead.
Sample Input
3
1
2
3
Sample Output
-1
-1
1
Source
2018 Multi-University Training Contest 1
题意就是给你一个数字n = X+Y+Z,然后要n整除x,n整除y,n整除z,同时xyz相乘最大,求xyz的值。
题解也很简单,因为一个数字要拆成三份只有三种情况:比如数字1
1. 2. 3.
所以只要考虑这三种情况即可,同时能除6,就一定能除3,所以又排除一种,只有两种情况考虑就好。
Tips:一定要开longlong!
#include<bits/stdc++.h>
using namespace std;
int main() {
long long int _,n;
for(cin>>_;_;_--){
scanf("%lld",&n);
if(n % 3 == 0 ){
printf("%lld\n",(n/3)*(n/3)*(n/3));
}else if( n % 4 == 0){
printf("%lld\n",(n/4)*(n/4)*(2*n/4));
}else{
puts("-1");
}
}
}