lfyzoj103 割海成路之日

2022-05-08 00:54:10 字數 1991 閱讀 2061

現在,擺在早苗面前的是一道簡單題。只要解決了這道簡單題,早苗就可以發動她現人神的能力了:

輸出\[1\ \mathrm\ 2\ \mathrm \cdots \mathrm\ n

\]第一行是乙個整數 \(t\),代表有 \(t\) 組資料。

下來 \(t\) 行,一行乙個整數 \(n\)。

\(t\) 行,一行乙個整數,是你的答案。

input

2

3 5

output
0

1

對於 \(30\%\) 的資料,\(t \leq 10\),\(n \leq 100\)。

對於 \(50\%\) 的資料,\(t \leq 100000\),\(n \leq 100000\)。

對於另外 \(30\%\) 的資料,\(t \leq 2\),\(n \leq 10^-1\)。

對於所有的資料,\(1 \leq t \leq 1145140\),\(1 \leq n \leq 10^-1\)。

時間限制:\(1\mathrm\)

記憶體限制:\(256\mathrm\)

本文整理自flyinghearts的部落格。

記 \(f(x,y)\) 為從 \(x\) 一路異或到 \(y\) 的值。\(\mathrm\) 異或,\(\mathrm\) 是或。

對於 \(f(2^k,2^-1)\) 這 \(2^k\) 個數,它們的最高位顯然是第 \(k\) 位。最高位的 \(1\) 的個數為 \(2^k\)。

\(k \geq 1\) 時, \(2^k\) 為偶數,\(\mathrm\) 下來成了 \(0\)。將這些數的最高位抹去,\(f\) 的值不變,則 \(f(2^k,2^-1)=f(2^k-2^k,2^-1-2^k)=f(0,2^k-1)\)。

則 \(f(0,2^-1) = f(0,2^k-1)\ \mathrm\ f(2^k,2^-1)=0\) 當 \(k \geq 1\) 時。

即 \(f(0,2^k-1)=0\) 當 \(k \geq 2\) 時。

對於 \(n \geq 4\),設其最高位 \(1\) 在第 \(k\) 位,則 \(k \geq 2\)。

\(f(0,n)=f(0,2^k-1)\ \mathrm\ f(2^k,n)=f(2^k,n)\)

對於 \(2^k \sim n\) 這 \(n-2^k+1\) 個數,最高位有 \(m=n-2^k+1\) 個 \(1\)。

\(n\) 與 \(n-2^k\) 同奇偶。

\(m\) 是偶數,則 \(f(2^k,n)=f(0,n-2^k)\)。

遞降這個公式,也即相當於不斷剝去 \(n\) 最高位的 \(1\),得到 \(f(0,n)=f(0,n \bmod 4)\)。

\(n \equiv 1 \pmod 4\) 時,\(f(1,n)=f(0,n)=f(0,1)=1\)。

\(n \equiv 3 \pmod 4\) 時,\(f(1,n)=f(0,n)=f(0,3)=0\)。

\(m\) 是奇數,則 \(f(2^k)=f(n-2^k)\ \mathrm\ 2^k\)。

遞降這個公式,得 \(f(0,n)=\eta\ \mathrm\ f(0,n \bmod 4)\)。

其中 \(\eta\) 是 \(n\) 將第 \(0,1\) 位置 \(0\) 後的數。

\(n \equiv 0 \pmod 4\) 時,\(f(1,n)=f(0,n)=n\)。

\(n \equiv 2 \pmod 4\) 時,\(f(1,n)=f(0,n)=n+1\)。

綜上所述

\[f(1,n)=

\begin

n, &n \equiv 0 \pmod 4\\

1, &n \equiv 1 \pmod 4\\

n+1, &n \equiv 2 \pmod 4\\

0, &n \equiv 3 \pmod 4\\

\end

\]因此我們得到了 \(\mathrm(1)\) 演算法

失業日記 10月10日

10月10日 晴 週六 半夜醒來一次,聽到外面嘩啦啦的響聲,好像下雨了,我很好奇,難道現在下雨了嗎?雖然可能快到雨季了,但是這個時候不應該下雨啊,於是我坐起來到床邊窗戶看看是否真的下雨了,借助路燈,仔細看了看外面的地面,都很幹,沒下雨,於是向四周望一望,到處的樹葉都在抖動,隔壁的公寓區院子裡乙個很高...

10月10日 繼續加油!

10月10日 dns解析過程 1 瀏覽器先檢查自身快取中有沒有這個網域名稱對應的ip位址,如果有,解析結束。2 如果瀏覽器快取中沒有,檢查作業系統快取中有沒有對應的結果。而作業系統也有乙個網域名稱解析的過程。在windows中可通過c盤裡乙個hosts檔案來設定,如果你在這裡指定了乙個網域名稱對應的...

vmware10 win10安裝記錄

當然是用vmware啦 當然是選擇原諒 然而下了vm12的版本並跑不起來,大概是450的錯吧 嘆 然後就下了個10,嘛,反正能用就行啦 然後問題就來了,下映象呢?ms官網上都沒怎麼找到,於是網上搜部落格,發現了乙個掛映象的 後面 裡面好像挺多微軟系的軟體的,嘛,如果以後有用到第二次的話就給你錢!然後...