第一
深度決定了要往下幾層
第二
奇數往左,偶數往右
備註:
假設在 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);
}
}
第一
深度決定了要往下幾層
第二
奇數往左,偶數往右
備註:
假設在 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" 這句話是什麼意思?
請問為什麼是num=(num+1)/2;不是num/=2;?
請問為什麼是num=(num+1)/2;不是num/=2;?
沒事我懂ㄌ