#11144: __參考


smart70094 (Scorpius)


第一
深度決定了要往下幾層

第二
奇數往左,偶數往右

備註:

假設在 5 這個節點上

往左為(5*2)=10,往右為(5*2)+1=11

第三
兩顆球會將目前那一點的情況變回最原本的情況,所以每次除以2

--------------------------------------------------------

 

#include<stdio.h>

int main(){

  int depth,num;

  scanf("%d",&num);

  while(scanf("%d%d",&depth,&num)==2){

    int k=1;

    for(int d=0;d<depth-1;d++){

      if(num%2) {k*=2;num=(num+1)/2;}

      else{k=(k*2)+1;num/=2;}

    }

    printf("%d\n",k);

  }

}

#17434: Re:參考


g289583512@YAHOO.COM.TW (Lin Kevin)


第一
深度決定了要往下幾層

第二
奇數往左,偶數往右

備註:

假設在 5 這個節點上

往左為(5*2)=10,往右為(5*2)+1=11

第三
兩顆球會將目前那一點的情況變回最原本的情況,所以每次除以2

--------------------------------------------------------

 

#include

int main(){

  int depth,num;

  scanf("%d",&num);

  while(scanf("%d%d",&depth,&num)==2){

    int k=1;

    for(int d=0;d<depth-1;d++){

      if(num%2) {k*=2;num=(num+1)/2;}

      else{k=(k*2)+1;num/=2;}

    }

    printf("%d\n",k);

  }

}

請問 "兩顆球會將目前那一點的情況變回最原本的情況,所以每次除以2" 這句話是什麼意思?


#28135: Re:參考


d10831523@gapps.fg.tp.edu.tw (廖與僑)


請問為什麼是num=(num+1)/2;不是num/=2;?

#28136: Re:參考


d10831523@gapps.fg.tp.edu.tw (廖與僑)


請問為什麼是num=(num+1)/2;不是num/=2;?

沒事我懂ㄌ