给出一个数,要求分拆成最多的数的和,并且每一个数都不同...
既然要求最多并且不同,那就尽量要连续给出,并且把剩余的数依次给最后的几个数上每次加一,得到序列即可
1 #include<stdio.h>
2 int main()
3 {
4 int n,arr[1001],i,j,t;
5
6 while(scanf("%d",&t)!=EOF){
7 while(t--)
8 {
9 scanf("%d",&n);
10 int wei=0,c=2;
11 while(1)
12 {
13 if(n<c)break;
14 arr[wei]=c;
15 wei++;
16 n=n-c;
17 c++;
18 }
19 c=n;
20 while(c)
21 {
22 for(i=wei-1;i>=0;i--)
23 {
24 arr[i]++;
25 c--;
26 if(c==0)break;
27 }
28 }
29 for(i=0;i<wei;i++)
30 {
31 if(i==0)
32 {
33 printf("%d",arr[i]);
34 }
35 else
36 {
37 printf(" %d",arr[i]);
38 }
39
40 }
41 printf("\n");
42 if(t)printf("\n");
43 }}
44 return 0;
45 }