Submission #3748369
Source Code Expand
n,x = map(int,input().split())
x -= 1
p = [1]
l = [1]
for i in range(n):
p.append(p[-1]*2+1)
l.append(l[-1]*2+3)
res = 0
while n >= 0:
if n == 0: # レベル1のバーガーはこれ以上細分化できない
res += 1
break
elif x == 0: # 左端
break
elif x == l[n] - 1: # 右端
res += p[n]
break
elif x == l[n] // 2: # 中心
res += p[n-1] + 1
break
elif x > l[n] // 2: # 1個包含している
res += p[n-1] + 1
x -= l[n-1] + 2
n -= 1
else: # 包含していない
n -= 1
x -= 1
print(res)
Submission Info
| Submission Time | |
|---|---|
| Task | D - Christmas |
| User | morio__ |
| Language | Python (3.4.3) |
| Score | 400 |
| Code Size | 697 Byte |
| Status | AC |
| Exec Time | 18 ms |
| Memory | 3064 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | a01, a02, a03 |
| All | a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| a01 | AC | 18 ms | 3064 KiB |
| a02 | AC | 18 ms | 3064 KiB |
| a03 | AC | 18 ms | 3064 KiB |
| b04 | AC | 18 ms | 3064 KiB |
| b05 | AC | 18 ms | 3064 KiB |
| b06 | AC | 18 ms | 3064 KiB |
| b07 | AC | 18 ms | 3064 KiB |
| b08 | AC | 17 ms | 3064 KiB |
| b09 | AC | 18 ms | 3064 KiB |
| b10 | AC | 18 ms | 3064 KiB |
| b11 | AC | 18 ms | 3064 KiB |
| b12 | AC | 18 ms | 3064 KiB |
| b13 | AC | 18 ms | 3064 KiB |
| b14 | AC | 18 ms | 3064 KiB |
| b15 | AC | 18 ms | 3064 KiB |
| b16 | AC | 18 ms | 3064 KiB |