hdu 6298 Maximum Multiple(规律)
2024-09-04 22:04:36
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;
}
}
最新文章
- linux命令详解:md5sum命令
- Python的with用法理解
- Web之路笔记之三 - 使用Floating实现双栏样式
- exe文件无法打开
- C#之发送邮件汇总
- Android样式的开发:layer-list篇
- PHP 反射机制Reflection
- javascript 切换动画
- 阿里云-对象储存OSS
- xmlHTTP技术资料
- redis持久化AOF与RDB
- hdu3336 Count the string 扩展KMP
- 我的Git教程 之 解决 git clone后无代码
- ASP.NET MVC与Sql Server建立连接
- idea创建springcloud项目图文教程(EurekaServer注册中心)
- easyui---基础组件:dialog
- CSS-用伪元素制作小箭头(轮播图的左右切换btn)
- 求树的直径和中心(ZOJ3820)
- 记作为前端开发人员跑去面试C#.NET
- 从程序员角度看ELF