2019 09 18愛奇藝演算法崗 測試崗第二題

2021-09-27 06:37:05 字數 1978 閱讀 6773

# 按位或運算

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都是得到最終結果,所以只要以最小的次數將...