結果
| 問題 |
No.916 Encounter On A Tree
|
| コンテスト | |
| ユーザー |
convexineq
|
| 提出日時 | 2021-05-05 08:43:11 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 64 ms / 2,000 ms |
| コード長 | 830 bytes |
| コンパイル時間 | 345 ms |
| コンパイル使用メモリ | 82,392 KB |
| 実行使用メモリ | 76,740 KB |
| 最終ジャッジ日時 | 2024-09-12 23:03:04 |
| 合計ジャッジ時間 | 6,052 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 56 |
ソースコード
MOD = 10**9+7
N = 2**20+2
fac = [1]*N
for i in range(2,N):
fac[i] = fac[i-1]*i%MOD
p2 = [1]*N
for i in range(1,N):
p2[i] = p2[i-1]*2%MOD
d,l,r,k = map(int,input().split())
a = l.bit_length()
b = r.bit_length()
ans = 1
for i in range(1,d+1):
if i != a and i != b:
ans *= fac[1<<i-1]
ans %= MOD
if a==b:
ans *= p2[a-1]
ans %= MOD
ans *= fac[(1<<a-1)-2]
ans %= MOD
if k%2: ans = 0
k //= 2
if 0 <= k <= a-1:
ans *= p2[k-1]
ans %= MOD
else:
ans = 0
else:
ans *= fac[(1<<a-1)]
ans %= MOD
ans *= fac[(1<<b-1)-1]
ans %= MOD
c = b-a
if (k-c)%2: ans = 0
k = (k-c)//2
if k==0:
ans *= p2[c]
ans %= MOD
elif 0 <= k <= a-1:
ans *= p2[c+k-1]
ans %= MOD
else:
ans = 0
print(ans)
convexineq