結果

問題 No.737 PopCount
ユーザー titia
提出日時 2025-09-25 01:20:32
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 35 ms / 1,000 ms
コード長 425 bytes
コンパイル時間 483 ms
コンパイル使用メモリ 82,712 KB
実行使用メモリ 53,860 KB
最終ジャッジ日時 2025-09-25 01:20:43
合計ジャッジ時間 2,452 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

def SUM(start,ko):
    return (start+(start+ko-1))*ko//2

N=int(input())

ANS=0
mod=10**9+7

hi=2
for i in range(63):
    k=(N+1)//(1<<(i+1))

    #print(i,k)

    st=SUM(1<<i,1<<i)

    #print(st)

    ANS+=(st+(st+(k-1)*hi))*k//2

    #print((1<<(i+1))*k + (1<<i))

    if i!=0 and ((1<<(i+1))*k + (1<<i))<=N:
        ANS+=SUM((1<<(i+1))*k + (1<<i),N-(1<<(i+1))*k - (1<<i)+1)


    hi*=4

    ANS%=mod

print(ANS%mod)
    
0