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
注意!cin容易导致TLE,解决方法是加上std::ios::sync_with_stdio(false);或直接使用scanf
注意long long和int的一些陷阱!!
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
int n, t;
std::cin >> t;
while(t--)
{
std::cin >> n;
if( n%3 == 0)
cout << (1ll)*(n/3)*(n/3)*(n/3) << endl;
else if( n%4 == 0)
cout << (1ll)*(n/4)*(n/4)*(n/2) << endl;
else
cout << "-1" << endl;
}
}