1 条题解
-
0
C :
#include<stdio.h> int main() { int D,n,k,i,j; while(scanf("%d %d",&D,&n),D&&n) { for(i=1,k=1;i<D;i++) if(n%2==1) { k=2*k; n=(n+1)/2; } else { k=1+2*k; n=n/2; } printf("%d\n",k); } return 0; }
C++ :
#include<stdio.h> int main() { int D,I; while(scanf("%d%d",&D,&I)==2){ if(D==0&&I==0) return 0; else{ int k=1; for(int i=0;i<D-1;i++)//一共进行D-1次选择,在每个节点 //上,第偶数次路过则右走,第奇数次路过则左走 if(I%2){ k=2*k; I=(I+1)/2; } else { k=k*2+1; I/=2; } printf("%d\n",k); } } return 0; }
- 1
信息
- ID
- 1005
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者