ZJOI2003 密碼機 樹狀陣列

2021-07-26 16:44:15 字數 1269 閱讀 8309

一台密碼機按照以下的方式產生密碼:首先往機器中輸入一系列數,然後取出其中一部分數,將它們異或以後得到乙個新數作為密碼。現在請你模擬這樣一台密碼機的運**況,使用者通過輸入控制命令來產生密碼。密碼機中存放了乙個數列,初始時為空。密碼機的控制命令共有3種:

add < number >

把< number >到數列的最後。

remove < number >

在數列中找出第乙個等於< number >的數,把它從數列中刪除。

xor between < number1 > and < number2 >

對於數列中所有大於等於< number1 >並且小於等於< number2 >的數依次進行異或,輸出最後結果作為密碼。如果只有乙個數滿足條件,輸出這個數。如果沒有任何數滿足條件,輸出0。

你可以假設使用者不會remove乙個不存在於數列中的數,並且所有輸入的數都不超過20000。

包括了一系列的控制命令。每個控制命令佔據單獨一行。輸入檔案中沒有多餘的空行。檔案不超過60000行。

對於每個xor命令,依次在輸出一行包括你的密碼機所產生的密碼。輸出檔案中不應該包含任何的多餘字元

add 5

add 6

xor between 1 and 10

remove 5

xor between 6 and 83 6

因為異或的逆運算是其本身,所以加減操作是乙個道理,均可用異或完成。

對於查詢操作,不妨使用樹狀陣列維護序列,只需要將樹狀陣列的加法改為異或即可

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

inline

const

int get_int()

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

return num*bj;

}const

int maxn=500005;

struct bit

void init(int n)

void add(int x,int v)

int sum(int x)

} bit;

int main() else

}return

0;}

ZJOI2020 密碼亂搞做法

考場寫的亂搞,現在想到一些讓正確率更高的辦法,我猜可以過,先寫一下大體思路。首先我們有 m 個方程 a i times x b i c i bmod mod 顯然這個模意義方程是可以加減的,我們嘗試構造乙個方程 x sum b i sum c i 這樣如果 b i 個數不多,就可以得到 x 的大體區...

Windows 2003 無法設定密碼解決辦法

在設定win2003的域使用者密碼時,老是出現這樣的提示 windows無法設定linxiaoyan的密碼,原因是 密碼不滿足密碼策略的要求。檢查最小密碼長度,密碼複雜性和密碼歷史的要求。我設定的密碼都是六位數以上的,有數字的,有字母的,有混合的。可是都不行。請問是什麼原因,如何設定 對於2003域...

2K XP 2003 系統登入密碼破解

第一種方法 以 2000 為例,如果你忘記系統登入密碼,系統是裝在 c盤,在c winnt 裡有乙個 repair 資料夾,把裡邊的 sam檔案複製到,c winnt system32 config 替換掉原來的 sam即可,重啟再進入系統就沒有密碼啦。還一種方法可以把c winnt system3...