import java.util.Scanner;
public class Main {
public static void main(String[] args){
int n;
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
n = cin.nextInt();
int count = 0;
int sum = 0;
for(int i=2; ;i++){
sum+=i;
if(sum>n){
sum-=i;
break;
}
count++;
}
int[] a = new int[count];
int t =0;
for(int i=2; ;i++){
a[i-2] = i;
t++;
if(t==count)break;
}
int f = n - sum;
t = count-1;
while(f>0){
a[t%count]++;
f--;
t--;
if(t<0)t+=count;
}
for(int i=0; i<a.length; i++){
if(i==a.length-1){
System.out.println(a[i]);
}
else{
System.out.print(a[i]+" ");
}
}
}
}
}
数论里很好的一个题目。感觉数学真的很有意思啊!
题目大意:给定一个整数数m.将其拆成几个不同的正整数m1,m2,m3.......,这些正数的和等于这个数m = m1+m2+m3+....,使得这些整数的积最大max(m1*m2*m3*.