HIHOCODER 1182 尤拉路 三

2022-07-26 10:06:11 字數 1481 閱讀 9092

小hi和小ho破解了一道又一道難題,終於來到了最後一關。只要開啟眼前的寶箱就可以通關這個遊戲了。

寶箱被一種奇怪的機關鎖住:

這個機關是乙個圓環,一共有2^n個區域,每個區域都可以改變顏色,在黑白兩種顏色之間切換。

小ho控制主角在周圍探索了一下,果然又發現了乙個紙片:

機關黑色的部分表示為1,白色的部分表示為0,逆時針連續n個區域表示乙個二進位制數。開啟機關的條件是合理調整圓環黑白兩種顏色的分布,使得機關能夠表示0~2^n-1所有的數字。

我嘗試了很多次,終究沒有辦法開啟,只得在此寫下機關破解之法。

——by 無名的冒險者

小ho:這什麼意思啊?

小hi:我給你舉個例子,假如n=3,我們通過順時針轉動,可以使得正下方的3個區域表示為:

因為黑色表示為1,白色表示為0。則上面三個狀態分別對應了二進位制(001),(010),(101)

每轉動乙個區域,可以得到乙個新的數字。一共可以轉動2n次,也就是2n個數字。我們要調整黑白區域的位置,使得這2n個數字恰好是0~2n-1

小ho:我懂了。若n=2,則將環上的黑白色塊調整為"黑黑白白",對應了"1100"。依次是"11","10","00","01"四個數字,正好是0~3。那麼這個"黑黑白白"就可以開啟機關了咯?

小hi:我想應該是的。

小ho:好像不是很難的樣子,我來試試!

第1行:1個正整數,n。1≤n≤15

第1行:1個長度為2^n的01串,表示一種符合要求的分布方案

3
00010111
可以把每k位二進位制數看作乙個點,它與左移一位+0和+1形成的新k位二進位制數存在一條邊相連。

這樣只要每次不走重邊,每次形成的都是乙個新的數,這樣走1

#define inf 1000000000

#define pi acos(-1)

#define bug puts("here")

#define rep(i,x,n) for(int i=x;i<=n;i++)

#define dep(i,n,x) for(int i=n;i>=x;i--)

#define mem(a,x) memset(a,x,sizeof(a))

using namespace std;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}const int n=(1<<15)+1;

bool vis[n];

int ans[n],tn,n;

bool euler(int u,int step)

int main()

hiho 1182 尤拉路 三

小ho 是這樣的,每次轉動乙個區域不是相當於原來數字去掉最左邊一位,並在最後加上1或者0麼。於是我考慮對於 xyyy 它轉動之後可以變成 yyy0 或者 yyy1 我就將所有的數字0 2 n 1看作2 n個點,連線所有的 xyyy yyy0 xyyy yyy1 比如當n 3時,我得到了這樣乙個圖 我...

尤拉公式(尤拉公式)

尤拉公式 euler s formula,又稱尤拉公式 是在復分析領域的公式,將三角函式與複數指數函式相關聯,因其提出者萊昂哈德 尤拉而得名。尤拉公式提出,對任意實數 都存在 其中 是自然對數的底數,是虛數單位,而 和 則是余弦 正弦對應的三角函式,引數 則以弧度為單位。這一複數指數函式有時還寫作 ...

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...