#11144:


smart70094 (Scorpius)

學校 : 國立雲林科技大學
編號 : 55629
來源 : [118.171.189.79]
最後登入時間 :
2017-01-26 01:39:25
a249. 00679 - Dropping Balls -- UVa679 | From: [111.242.60.232] | 發表日期 : 2016-07-08 18:04

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

第二
奇數往左,偶數往右

備註:

假設在 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)

學校 : 不指定學校
編號 : 95273
來源 : [140.117.178.50]
最後登入時間 :
2019-04-25 11:22:47
a249. 00679 - Dropping Balls -- UVa679 | From: [140.117.178.50] | 發表日期 : 2019-04-10 22:39

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

第二
奇數往左,偶數往右

備註:

假設在 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 (廖與僑)

學校 : 臺北市立第一女子高級中學
編號 : 107948
來源 : [211.75.180.175]
最後登入時間 :
2022-10-03 21:31:01
a249. 00679 - Dropping Balls -- UVa679 | From: [203.64.52.40] | 發表日期 : 2021-11-15 18:46

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

 
#28136: Re:參考


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

學校 : 臺北市立第一女子高級中學
編號 : 107948
來源 : [211.75.180.175]
最後登入時間 :
2022-10-03 21:31:01
a249. 00679 - Dropping Balls -- UVa679 | From: [203.64.52.40] | 發表日期 : 2021-11-15 18:49

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

沒事我懂ㄌ

 
ZeroJudge Forum