# 按位或運算
defh
(a, b)
:return a|b
按位異或運算
defy
(a, b)
:return a^b
n, m =
map(
int,
input()
.split())
# 接收2的n次方個數
m =list
(map
(int
,input()
.split())
)# op列表儲存變換操作
op =
for i in
range
(m):
a =list
(map
(int
,input()
.split())
)# m次操作,對應m個輸出
for i in
range
(m):
# 對於每次操作,需要n輪能夠得到v值
# h_flag 和 y_flag為true的時候執行對應的位運算函式。
# 後續操作裡當乙個為true時,保證另乙個是false。由題知,初始時或運算先執行,所以h_flag賦值為true。
h_flag =
true
y_flag =
false
# 根據變換操作,對m列表更新。
x = op[i][0
]-1 m[x]
= op[i][1
]# copy初始時的數字接收列表m以及n,避免影響到原始資料。
mm = m[:]
n = n
# temp_m和a列表都是為了在執行位運算時,儲存新的約簡後的資料的。
temp_m =
a =for j in
range
(n,0,-
1):# 執行異或位運算
if y_flag:
end =
2**j-
1for p in
range(0
, end,2)
: x = y(temp_mm[p]
, temp_mm[p+1]
) h_flag =
true
y_flag =
false
mm = a[:]
a =iflen
(mm)==1
:print
(mm[0]
)# 執行或位運算
else
: end =
2**j-
1for p in
range(0
, end ,2)
: x = h(mm[p]
, mm[p+1]
) h_flag =
false
y_flag =
true
temp_mm = temp_m[:]
temp_m =
iflen
(temp_mm)==1
:print
(temp_mm[0]
)
測試1
測試2按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下:
下表中變數 a 為 60,b 為 13,二進位制格式如下:
愛奇藝 筆試
題目描述 時間限制 1秒 空間限制 32768k 牛牛養了n只奶牛,牛牛想給每只奶牛編號,這樣就可以輕而易舉地分辨它們了。每個奶牛對於數字都有自己的喜好,第i只奶牛想要乙個1和x i 之間的整數 其中包含1和x i 牛牛需要滿足所有奶牛的喜好,請幫助牛牛計算牛牛有多少種給奶牛編號的方法,輸出符合要求...
愛奇藝程式設計題
1 爐石傳說 時間限制 c c 語言1000ms 其他語言3000ms 記憶體限制 c c 語言65536kb 其他語言589824kb 題目描述 小明喜歡玩一款叫做爐石傳說的卡牌遊戲,遊戲規則如下,玩家擁有n顆水晶和m張卡牌,每張卡牌的使用會消耗a顆水晶並且造成b的傷害值,請你幫小明算一下該如何使...
演算法 愛奇藝春招筆試題
一共兩題還是比較簡單的 題目有a,b,c三個數和如下兩個操作 1.任意兩個數 1,2.乙個數 2,假設經過有限步操作一定能使得3個數相等,問最少的操作次數 思路排序後較小的兩個數轉為最大的數其實不管用1還是2方法步數一樣,比如3,3,5使用兩次1還是使用2次2都是得到最終結果,所以只要以最小的次數將...