結果

問題 No.916 Encounter On A Tree
ユーザー sasa8uyauya
提出日時 2025-03-06 10:22:54
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 667 bytes
コンパイル時間 470 ms
コンパイル使用メモリ 82,280 KB
実行使用メモリ 122,996 KB
最終ジャッジ日時 2025-03-06 10:23:01
合計ジャッジ時間 6,894 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 34 WA * 18 RE * 4
権限があれば一括ダウンロードができます

ソースコード

diff #

d,l,r,k=map(int,input().split())
M=10**9+7
N=1<<d
fa=[1]
for i in range(1,N+1):
  fa+=[fa[-1]*i%M]
dl=len(bin(l))-3
dr=len(bin(r))-3
a=1
for i in range(d):
  a*=fa[1<<i]
  a%=M
if k-(dr-dl)>=0 and (k-(dr-dl))%2==0:
  dm=dl-(k-(dr-dl))//2
  if dm==dl:
    a*=pow(fa[1<<dr],M-2,M)
    a*=1<<dl
    a*=1<<(dr-dl)
    a*=fa[(1<<dl)-1]*fa[(1<<dr)-1]
  elif dl==dr:
    a*=pow(fa[1<<dl],M-2,M)
    a*=1<<dm
    a*=2
    a*=1<<(dl-dm-1)
    a*=1<<(dl-dm-1)
    a*=fa[(1<<dl)-2]
  else:
    print(dm,dl,dr)
    a*=pow(fa[1<<dl],M-2,M)*pow(fa[1<<dr],M-2,M)
    a*=1<<dm
    a*=2
    a*=1<<(dl-dm-1)
    a*=1<<(dr-dm-1)
    a*=fa[(1<<dl)-1]*fa[(1<<dr)-1]
else:
  a=0
print(a%M)
0