作者giive (lala)
看板CSSE
標題[閒聊] 被制約的頭腦
時間Fri May 27 09:29:15 2005
從 10 加到 10000 的程式要怎麼寫
10000個programer應該有9990個會用for或是類似的迴圈寫
int result=0;
for(int a = 10 ; a <=10000 ; a++){
result += a;
}
一定只能這樣寫嗎??
int a =10 , b=10000 , result = 0;
result = (a+b)*(b-a+1)/2 ; -------> 小學的梯形運算
用for是得跑 9990次的加法運算
用梯形運算只需要 三次加法(減也算加) 一次整數乘 一次整數除
因為是除以2 , 應該還可以用shift的方式加速
有一股蛋蛋的憂傷
我的頭腦有一種被制約的感觸
--
不過如果上天肯在給我一次機會
我大概還是會用for去寫吧
因為連乘跟連除都可以用:p
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.207.170
※ 編輯: giive 來自: 140.112.207.170 (05/27 09:33)
1F:推 Eventis:直覺的做法也未必就是不好啊:) 61.62.49.43 05/27
2F:→ Eventis:如果不是效能瓶頸,只用這麼一次 61.62.49.43 05/27
3F:→ Eventis:這麼緇珠必較又是何苦咧XD 61.62.49.43 05/27
4F:推 giive:不是這個意思 , 只是驚覺我的頭腦已經想不出for以ꔠ140.112.207.170 05/27
5F:→ giive:外的作法 , 感覺有種被制約的感覺140.112.207.170 05/27
6F:推 KoalaLee:真的有那麼多人會這樣寫嘛 140.129.22.232 05/27
7F:推 Eventis:可能這個問題不那麼直接,不妨試試更常見的問題. 61.62.49.43 05/27
8F:→ Eventis:要將一個多維陣列有規律地填入特殊的值的作法:) 61.62.49.43 05/27
9F:推 Eventis:"一定要怎麼樣"跟"一定不要怎麼樣" 61.62.49.43 05/27
10F:→ Eventis:我不認為這兩種態度是不同的事:) 61.62.49.43 05/27
11F:推 kevin190:看到你的程式,讓我聯想到ILP跟SIMD指令集加速 218.171.136.77 05/29