#include<stdio.h> #include<stdlib.h> #define SIZE 100 static int data[SIZE]; static void build_data(void) { for(int c=0;c<SIZE;c++) { int n=rand()%9; data[c]=1; while(n--) { data[c]*=2; } } } int data1[9]={1,2,4,8,16,32,64,128,256}; int time=0; int ge[267]; void jishu() { for(int i=0;i<SIZE;i++) { ge[data[i]]++; } } int main() { for(int l=0;l<10;l++) { time=0; build_data(); jishu(); while(1) { int flag=0; for(int i=7;i>=0;i--) { if(ge[data1[i]]>=2) { flag=1; ge[data1[i+1]]=ge[data1[i+1]]+ge[data1[i]]/2; ge[data1[i]]=ge[data1[i]]-ge[data1[i]]/2*2; } } if(flag==1) time++; else break; } printf("%d ",time); } return 0; }