记录编号 |
224902 |
评测结果 |
A |
题目名称 |
[UVa 679]小球下落 |
最终得分 |
100 |
用户昵称 |
liu_runda |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2016-02-16 19:10:49 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
bool goleft[22];
int main(){
freopen("fballs.in","r",stdin);
freopen("fballs.out","w",stdout);
int t;
scanf("%d",&t);
while(t--){
memset(goleft,0,sizeof(goleft));
int d,I;
scanf("%d %d",&d,&I);
int h = d-1;
I--;
for(int i = 0;i<h;++i){
goleft[i]=I%2;
I/=2;
}
int pos = 0,w = 1;
for(int i = h-1;i>=0;--i){
if(goleft[i])pos+=w;
w<<=1;
}
pos+=1;//落在最低一层自左向右第几个
printf("%d\n",pos+(1<<(h))-1);
}
fclose(stdin);fclose(stdout);
return 0;
}