【题意简述】:输入一个数N,然后将这个这个数分解为若干个数的和,求分解的这些数的乘机最大的是多少!
【思路】:见代码:
/*
设此最大序列为2、3、……、x,则:
1。若剩余值(n-sum)等于x,则最后输出序列为:3、4、……、x、x+2,即将原最大序列每
项加1,再将最后剩余的一个1加到最后一项上。(这一项结果很显然)
2。若剩余值(n-sum)小于x,则从序列的最大项i开始,从大到小依次将每项加1,直到剩余
值用完。
*/
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i=2,sum = 0,j;
while(sum+i<=n)
{
sum+=i;
i++;
}
int m=n-sum;
if(m==i-1)//例如此时输入为8 ,则为2,3,3.所以就要将每一项都加一,并在最后一项再加一!
{
for(j=3;j<i;j++)
cout<<j<<" ";
cout<<j+1<<endl;//最后一个额外加一!
}
else
{
for(j=2;j<i-m;j++)//j<i-m这个可以猜测,试数! j=2,这个初始化!一定会执行!!
cout<<j<<" ";
while(j<i)
{
cout<<j+1<<" ";
j++;
}
cout<<endl;
}
return 0;
}