码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 6298

时间:2018-10-31 20:08:28      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:otto   preview   std   循环   nta   put   ase   ace   ram   

Problem Description
Given an integer n, Chiaki would like to find three positive integers xy and z such that: n=x+y+zxnynzn and xyz is maximum.
 

 

Input
There are multiple test cases. The first line of input contains an integer T (1T106), indicating the number of test cases. For each test case:
The first line contains an integer n (1n106).
 

 

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
 
 
题目意思:给你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 }

 

HDU 6298

标签:otto   preview   std   循环   nta   put   ase   ace   ram   

原文地址:https://www.cnblogs.com/stul/p/9884946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!