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