描述:大包套小包,最后会剩下几个包,而且剩下包的数量所包含的包的数量尽量平均,其实开始输入的包的数量最多的就是最后剩下的包的数量,然后依次递增这个数量输出就可以了
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define N 10010
int cmp(const void *p1,const void *p2)
{
return *(int *) p1 - *(int *) p2;
}
int num[N];
int main()
{
//freopen("a.txt","r",stdin);
int n,flag,sum,count=0;
while(scanf("%d",&n)!=EOF)
{
if(!n) break;
if(count) printf("\n");
for(int i=0; i<n; i++) scanf("%d",&num[i]);
qsort(num,n,sizeof(int),cmp);
flag=sum=1;
for(int i=0; i<n-1; i++)
if(num[i+1]==num[i])
{
sum++;
if(flag<sum) flag=sum;
}
else sum=1;
printf("%d\n",flag);
for(int i=0; i<flag; i++)
{
printf("%d",num[i]);
for(int j=i+flag; j<n; j+=flag)
printf(" %d",num[j]);
printf("\n");
}
count++;
}
return 0;
}