一.题目描述
一个自然数,如何分解可使乘积最大。
二.思路分析
由数学知识可知,只有把N分成尽可能多的3,它们的乘积才能最大(当只剩下4时不用再分,因为: 4 > 3*1)
所以可利用循环解决
三,代码描述
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int x,j=0,sum=1,i;
vector<int>p;
while(cin>>x)
{
for(;;)
{
if(x>4)
{
p.push_back(3);
x=x-3;
j++;
}
else break;
}
if(x==4)
{
p.push_back(4);
j++;
}
else
{
p.push_back(x);
j++;
}
for(i=0;i<j;i++)
{
sum=sum*p[i];
cout<<p[i]<<" ";
}
cout<<endl;
cout<<j<<" "<<sum<<endl;
sum=1;
j=0;
p.clear();
}
return 0;
}
四.思路分析
本题重在知道将此自然数分成多个三。