UVa Dropping Balls

Posted Reqaw’s Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa Dropping Balls相关的知识,希望对你有一定的参考价值。

题目链接:

https://cn.vjudge.net/problem/UVA-679

 1 /*
 2 问题
 3 输入完全二叉树的层数D和有几个小球滚落,计算最后一个小球落入的叶子结点的小号。
 4 
 5 解题思路
 6 直接模拟超时,所以想想其他的办法。看看能不能直接计算最后一个小球的路线,可以知道前两个球必然是一个落入左子树,
 7 一个落入右子树,那么对于给出的第I个编号的小球,如果I是奇数,它就是往左走的第(I+1)/2个小球,当I是偶数的时候,
 8 它就是往右走的第I/2个小球。 
 9 */ 
10 #include<cstdio>
11 int main()
12 {
13     //freopen("E:\\testin.txt","r",stdin);
14     int t,D,I;
15     while(scanf("%d",&t) == 1 && t != -1){
16         while(t--){
17             scanf("%d%d",&D,&I);
18             int k=1;
19             for(int i=0;i<D-1;i++){
20                 if(I&1){
21                     k =k * 2;
22                     I=(I+1)/2;
23                 }
24                 else{
25                     k = k*2+1;
26                     I = I / 2;
27                 } 
28             }
29             printf("%d\n",k);
30         }
31     }
32     return 0;
33 }

 

以上是关于UVa Dropping Balls的主要内容,如果未能解决你的问题,请参考以下文章

UVA 679 - Dropping Balls

UVa 679. Dropping Balls

UVa Dropping Balls

小球下落 (Dropping Balls,UVA 679)

UVa-679 Dropping Balls

UVa 679 Dropping Balls (例题 6-6)