結果
| 問題 |
No.916 Encounter On A Tree
|
| コンテスト | |
| ユーザー |
mkawa2
|
| 提出日時 | 2019-10-27 09:01:45 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 852 bytes |
| コンパイル時間 | 93 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 51,992 KB |
| 最終ジャッジ日時 | 2024-09-14 20:59:40 |
| 合計ジャッジ時間 | 17,853 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 28 WA * 27 RE * 1 |
ソースコード
import sys
sys.setrecursionlimit(10 ** 6)
input = sys.stdin.readline
def main():
md = 10 ** 9 + 7
d, l, r, k = map(int, input().split())
mx = pow(2, 20) + 5
fac = [1] * mx
for i in range(1, mx):
fac[i] = (fac[i - 1] * i) % md
d0 = d1 = 0
while l:
l //= 2
d0 += 1
while r:
r //= 2
d1 += 1
c = k - (d1 - d0)
if c < 0 or c % 2:
print(0)
exit()
h = k - c // 2
if c > 0: h -= 1
ans = 1
for i in range(d):
if i + 1 == d1:
w = pow(2, h, md)
if d0 == d1:
pw = pow(2, i, md)
ans = (ans * pw * w * fac[pw - 2]) % md
else:
ans = (ans * fac[pow(2, i, md) - w] * w) % md
else:
ans = (ans * fac[pow(2, i, md)]) % md
print(ans)
main()
mkawa2