※ 引述《btocola@kkcity.com.tw (btocola)》之銘言:
> 我很魯鈍想向您請教這種「很爛的寫法」的過程是怎麼寫的?
> 就以10!為例吧!煩請撥冗列出它的演算過程。若10!太煩瑣,
> 就請改成5!或您自己喜歡的階乘數目亦可。(個人魯鈍的緣故
> ,目前比較難以想像用陣列的方式能夠達到表達200!的乘績
> 方式)
> 若可能的話,請用下列之一我能看得懂的程式語言(若它具有
> 能表現出您所描述目的之功能的話,若不具有就不要使用它):
> ==> c/c++,java,pascal,masm or nasm or fasm,vb
> 在此先致謝!^^
真的覺得你沒有一邊用心思考一邊參與討論,
前面都已經寫很明了....
我實在無法理解一位有程式基礎的人在被提示到這種地步還會無法想像...
unsigned long long 陣列名[一個夠大的數字];
如果實作乘法運算時不希望使用暫存空間....
為了避免每個 element 因為乘法發生 overflow,
先找出 unsigned long long 的 max 值 18446744073709551615,
然後定一個邊界值,譬如 1000(其實可以更多,但是我懶得懶得算位數),
因為 999 * 999 絕對不會大於可表示的 max 值,所以 ok。
再來實作 C = A * B,
只要跑一個 loop,
做 C[i] = A[i] * A[i],
然後把 c[i] 中大於 999 的值加到 c[i+1] 去(就是模擬進位),
然後把 c[i] 的內容改成 0 - 999 的值。
這已經是很硬來很爛的實作方式了(如果要實作 RSA 會碰到效率問題),
你認為反覆這個動作 200 次的複雜度到得了 200! 嗎?
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Chung Cheng University
Department: Computer Science and Information Engineering
Researching: Porting GCC and Implementing VLIW instruction scheduler in GCC
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.16 > ╰─╮
╚╦═╦╝ ╰ * From:218-171-136-237.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎