我有以下一段代碼不符合我的要求。如何提高此算法的效率?
def cipher(plaintext, arr):
import math
ciphered = []
for letter in plaintext:
ciphered.append(math.pow(ord(letter)-65,arr[1]%arr[0]))
return ciphered
那些獲得到math.pow的參數是142和35。然後,它使用的是結果找到模塊221然而,結果它給我的是206.0當結果,它應該給我是12.即使當我在wolfram alpha中找到這個結果時,結果是12.我認爲這裏的問題與溢出問題有關。但是我不知道如何解決它
給我們一些'plaintext'和'arr'的樣本值,以及期望的輸出。 –
提高效率並沒有給你正確的答案是兩件不同的事情。一般來說,程序員會告訴你先讓它工作,然後優化算法......無論如何,只要提高它的效率,要考慮的一件事就是取消調用導入數學的操作。導入一個庫需要很多時間;如果你需要調用500,000次這樣的函數,那將是非常低效的。相反,你可以在函數中使用Python中原生的簡單操作和對象來實現你想要的功能..無論如何應該讓你開始 –
其中一個結束括號應該在'%arr [0]'之前,而不是之後。或者你可以用''替換'%',以使用快速模冪運算。 –