1. 程式人生 > >程式設計師升職記之40倍擴大器

程式設計師升職記之40倍擴大器

題目:

把INBOX(輸入欄)的每一個數都乘以40,然後把結果放進OUTBOX(輸出欄)中。

分析:

一般的程式設計師首先應該想到的是40=32+8,即設原數X,40 * X = 32 * X + 8 * X。但是我們計算到32 * X時(同時也記錄下了8 * X),會多計算2 * X 及 16 * X。我曾經也試過利用40 * X = 2 *(16 * X + 4 * X),但是此時也多計算了2 * X 和 8* X。這兩種計算方法在遊戲中所佔的行數相同,計算次數也相同(15行程式碼,64步運算)。始終無法達到最優。

正確的演算法應該是40 * X =(2 * X + 8 * X)* 2 * 2。這樣我們之多計算了4 * X。程式碼優化到了14行,56步計算。

程式碼: