给你一个正整数N,试将其分解成若干个互不相同的正整数之和,使得这些互不相同的正整数之积最大。
//想要积最大,则要保证n分解的数尽量小
#include<iostream>
#include<string.h>
#define size 100010
using namespace std;
int main()
{
int n;
int ans[size];
while(scanf("%d",&n)!=EOF)
{
int sum = 0 ,t = -1 ,i ;
for(i=2;i<=n;i++)
{
sum+=i;
if(sum>=n) {sum-=i; break;}
ans[++t]=i;
}
i = n-sum;
for(int j=0;j<i;j++) ans[t-j]++;
for(int j=0;j<t;j++) printf("%d ",ans[j]);
printf("%d\n",ans[t]);
}
return 0;
}