hdu6298 Maximum Multiple

题目传送门

题意:

给你一个整数n,从中找出可以被n整除的三个数x,y,z;

要求x+y+z=n,且x*y*z最大。

思路:

开始一看T到1e6,n也到1e6,就想到打表,可是打表就只输出最大值

没有把取的那三个数也数出来,纠结了许久。

正解就是设a=n/x,b=n/y,c=n/z;

则1/a+1/b+1/c=1;

则abc可取3,3,3;2,3,6;2,4,4

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 100
typedef long long ll;
/*int main()
{
int m;
while(cin>>m)
{ for(int n=1;n<=m;n++){
long long ans=-1;
int a=0,b=0,c=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(n%i==0&&n%j==0&&n%k==0&&i+j+k==n)
{
long long tmp=i*j*k;
if(ans<tmp)
{
ans=tmp;
a=i;
b=j;
c=k;
}
}
}
}
}
if(ans!=-1){
cout<<n<<" "<<ans<<" ";
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
}
return 0;
}*/
int main()
{
ios_base::sync_with_stdio();
cin.tie();
cout.tie();
int T;
ll n;
cin>>T;
while(T--){
cin>>n;
ll ans=-;
ll x,y,z;
if(n%==) {
x=n/,y=n/,z=n/;
if(x+y+z==n&&x*y*z>ans)
ans=x*y*z;
x=n/,y=n/,z=n/;
if(x+y+z==n&&x*y*z>ans)
ans=x*y*z;
}
if(n%==){
x=n/,y=n/,z=n/;
if(x+y+z==n&&x*y*z>ans)
ans=x*y*z;
}
cout<<ans<<endl;
}
}

最新文章

  1. linux命令详解:md5sum命令
  2. Python的with用法理解
  3. Web之路笔记之三 - 使用Floating实现双栏样式
  4. exe文件无法打开
  5. C#之发送邮件汇总
  6. Android样式的开发:layer-list篇
  7. PHP 反射机制Reflection
  8. javascript 切换动画
  9. 阿里云-对象储存OSS
  10. xmlHTTP技术资料
  11. redis持久化AOF与RDB
  12. hdu3336 Count the string 扩展KMP
  13. 我的Git教程 之 解决 git clone后无代码
  14. ASP.NET MVC与Sql Server建立连接
  15. idea创建springcloud项目图文教程(EurekaServer注册中心)
  16. easyui---基础组件:dialog
  17. CSS-用伪元素制作小箭头(轮播图的左右切换btn)
  18. 求树的直径和中心(ZOJ3820)
  19. 记作为前端开发人员跑去面试C#.NET
  20. 从程序员角度看ELF

热门文章

  1. 浅谈协议(四)——wireshark强力解析视频流协议
  2. LA 3263 That Nice Euler Circuit(欧拉定理)
  3. java判断回文数
  4. 学习旧岛小程序 (4)封装api 请求
  5. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
  6. 黑客教父郭盛华:提升家庭WiFi的10个方法
  7. CBV和FBV
  8. 对webpack的初步研究2
  9. [洛谷P4841][集训队作业2013]城市规划
  10. 关于VS调试