結果
| 問題 |
No.685 Logical Operations
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2025-07-05 01:35:48 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 60 ms / 2,000 ms |
| コード長 | 902 bytes |
| コンパイル時間 | 268 ms |
| コンパイル使用メモリ | 82,852 KB |
| 実行使用メモリ | 64,940 KB |
| 最終ジャッジ日時 | 2025-07-05 01:35:51 |
| 合計ジャッジ時間 | 2,644 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
mod=10**9+7
N=int(input())
from functools import lru_cache
@lru_cache(maxsize=None)
def calc(keta,rest,key):
rest=min(rest,(1<<(keta+1))-1)
if key==2 and keta==-1:
return 1
if keta==-1:
return 0
ANS=0
if key==0:
if rest>=(1<<keta):
ANS+=calc(keta-1,rest-(1<<keta),1)
ANS+=calc(keta-1,rest,0)
return ANS%mod
elif key==1:
if rest>=(1<<keta):
ANS+=calc(keta-1,rest-(1<<keta),2)
ANS+=calc(keta-1,rest-(1<<keta),1)
ANS+=calc(keta-1,rest,1)
ANS+=calc(keta-1,rest,1)
return ANS%mod
else:
if rest>=(1<<keta):
ANS+=calc(keta-1,rest-(1<<keta),2)
ANS+=calc(keta-1,rest-(1<<keta),2)
ANS+=calc(keta-1,rest,2)
ANS+=calc(keta-1,rest,2)
return ANS%mod
ANS=calc(64,N,0)
print(ANS)
titia