intget_two(int two){int two =1;while(num / two !=0){
two *=2;}if(two !=1){
two /=2;}}intget_var(int num){int var =0;int two =1;while(num / two !=0){
two *=2;
var++;}if(two !=1){
two /=2;
var--;}return var;}voidfun(int num){if(num ==1|| num ==2|| num ==0){printf("%d",num);return;}do{if(num /get_two(num)==1){printf("2(");fun(get_var(num));printf(")");if(num -get_two(num)!=0){printf("+");}}
num -=get_two(num);}while(num !=0);}
归并排序
voidmerge_sort(int*p_arr,int l,int h){int mid;if(l == h){return;}else{
mid =(1+ h)/2;merge_sort(p_arr,l,mid);merge_sort(p_arr,mid +1,h);merget_result(p_arr,1,mid,h);}}voidmerge_result(int*p_arr,int l,int mid,int h){int temp[h - l +1];int i,j;int k;
i = j = k =0;while(i <(mid - l +1)&& j <(h - mid)){if(*(p_arr + l + i)<*(p_arr + mid +1+ j)){
temp[k++]=*(p_arr + l + i++);}else{
temp[k++]=*(p_arr + mid +1+ j++);}}while(i <(mid - l +1)){
temp[k++]=*(p_arr + l + i++);}while(j <(h - mid)){
temp[k++]=*(p_arr + mid +1+ j++);}for(k =0;k <(h - l +1);k++){*(p_arr + l + k)= temp[k];}}
1. 10 进制数的2次幂表示比如 137 = 2(2(2)+2+2(0))+2(2+2(0))+2(0)int get_two(int two){ int two = 1; while(num / two != 0){ two *= 2; } if(two != 1){ two /= 2; }}int get_var(int num){ int var = 0; int two = 1; while(num / two != 0){ two *= 2; var++