模拟,数组初始化为0,每次+1,如果后两位一样,a[j-1]+1,a[j]=0,j变成j-1
#include<stdio.h>
#include<string.h>
int a[100002];
int main()
{
int n,i,j,m;
scanf("%d",&n);
m=n;
for(i=0;i<n;i++) a[i]=0;
for(i=1,j=0;i<=n;i++,j++)
{
a[j]++;
for( ;j>=1;j--)
{
if(a[j]==a[j-1])
{
a[j-1]++;
a[j]=0;
}
else
break;
}
}
printf("%d",a[0]);
if(j==0)
printf("\n");
else
{
for(i=1;a[i]!=0;i++)
printf(" %d",a[i]);
printf("\n");
}
return 0;
}