C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Visual Studio 2015 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 各位版大好,小弟目前得寫大數計算機,期末實習的project QQ 然後目前卡在階乘的部分惹,網路上搜尋發現大部分資料皆為幾十上百的階乘 例如50!或170!之類的 但我們的大數計算機希望能做到真正的大數那種可能可以處理幾十萬!的 然後現在有個方向是字串讀入輸入的數字 輸入的數字可能過大而int塞不下 然後分解4位並透過stringstream塞入int[8] int[0]~int[8] 每個陣列裡各有四位數字 舉例來說就是string(123456789012)會變int[0]=1234,int[1]=5678,int[2]=9012這樣 然後再透過int陣列去做階乘 答案的int矩陣假如計算後大於9999, 則int[7]=int[8]/9999,int[8]=int[8]%9999; But 卡在不知道如何去抓input的長度從而可以塞入陣列裡面 試著編譯過之後 VS的整個專案廢掉說不給用 出現out of range然後說什麼檔案已消失之類的QQ 發問是希望有大大可以指點一下QQ 並順便看一下想的方向正確嗎 因為做到現在有點疑惑,感覺寫到一半覺得方向好像有點 錯Q --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.146.57
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1493283149.A.B50.html ※ 編輯: jellyfishuan (140.118.138.73), 04/27/2017 16:53:29
1F:→ Hazukashiine: 樓下借我一顆水晶球04/27 16:53
2F:→ Hazukashiine: 都天大地大的學校惹 為什麼還不會問問題ㄋ04/27 16:55
因為整個程式碼在VS爆掉之後通通不見惹QQ 所以想說先把想法丟上來請教大家看看w ※ 編輯: jellyfishuan (140.118.138.73), 04/27/2017 16:57:05
3F:→ Hazukashiine: 哇靠... 通通不見還真的蠻屌的 屌 爆 了04/27 16:57
4F:→ Hazukashiine: 如果很懶的話就用 "GNU MP Bignum Library"04/27 16:59
5F:→ Hazukashiine: 至少不用想那些 trivial 的問題 有現成的庫可以用04/27 16:59
哦哦好的感謝大大提供的資訊!! 等等來參考一下
6F:推 jerryh001: string 不是有 length() 可以用?04/27 17:09
我知道有size,length等函數可以抓噢,是有點不太確定要怎麼抓出長度之後用長度去對 應到陣列裡面這樣,這部分我有點卡關
7F:推 tuyutd0505: 不限定使用第三方函式庫的話 推薦 GMP library 或 MPI04/27 17:10
8F:→ tuyutd0505: R library(在Win平台我覺得比較好裝) 精度是吃記憶體04/27 17:10
9F:→ tuyutd0505: 大小的 記憶體越大可以算得越多04/27 17:10
好的,謝謝大大!!!
10F:→ LPH66: 先給你個心理準備, 幾十萬階乘會有上百萬位數04/27 20:58
11F:→ LPH66: 就算四位一組 (順帶一提這裡是 10000 不是 9999)04/27 20:58
12F:→ LPH66: 還是會需要那麼大的一個陣列, 寫得出來不一定跑得出來04/27 20:59
所以果然想的不夠周全www
13F:→ pttworld: 以int的2147483647來說,二數相乘不能超過,所以取四位 04/27 21:23
14F:→ pttworld: 數是至多了。取餘是取一萬餘,不是9999。因為是到幾十04/27 21:23
15F:→ pttworld: 萬,乘法寫法必須每迴圈乘完做加總後的進位判斷,因為04/27 21:23
16F:→ pttworld: 加了幾十萬次有可能溢位,但如果只是幾千,9999的幾千04/27 21:23
17F:→ pttworld: 次也放得下,可全部乘完再一次進位處理。04/27 21:23
18F:→ pttworld: 如果覺得一般的乘法太慢,可以考慮傅立葉轉換的大數乘04/27 21:33
19F:→ pttworld: 法,不過花費記憶體多。04/27 21:33
哦哦哦感謝大大點出盲點!!!
20F:→ HamalAri: 10 萬階乘 43萬位,本人的洨筆電三秒就跑完,gmp很強的 04/27 23:25
21F:→ HamalAri: 洨筆電還只有 2g 呢 04/27 23:26
22F:→ HamalAri: 要相信發展了二十年的東西絕對比自幹的東西好04/27 23:26
好的謝謝板上大大們的提醒!! 我會去看完之後再來看怎麼解決的w ※ 編輯: jellyfishuan (140.118.138.42), 04/28/2017 02:50:29
23F:推 school4303: 連.cpp都不見? 04/28 06:47
就消失了我找不到QQ 我猜可能路徑亂掉之類的吧就認份重寫了,還好還寫不多幾十行而 已
24F:→ MOONRAKER: 還 滿 屌 的 屌 爆 了 04/28 10:18
25F:→ descent: 先把程式碼放在版本控制系統吧 04/28 10:54
26F:推 LPH66: >HamalAri 他現在就是要想自己寫, 那自己寫就會有這個問題04/28 14:35
27F:→ LPH66: 先不說 gmp, 光是大階乘我在幾年前就有看過快速實作 04/28 14:36
28F:→ LPH66: 那個做法在十幾年前的電腦十萬階乘也能幾秒內跑出來 04/28 14:40
29F:→ LPH66: 剛剛挖了挖舊檔案翻了出來: http://tinyurl.com/koz86e5 04/28 14:41
30F:→ LPH66: 不過原 PO 只是要寫個期末 project 而且應該不用玩這麼大04/28 14:42
31F:→ LPH66: 而已* 04/28 14:42
32F:→ LPH66: 所以我只是要提醒原 PO 量力而為, 目標訂太大可能會失望 04/28 14:45
嗯嗯其實能過期末實習的就ok了 感謝大大翻出的舊檔案!! ※ 編輯: jellyfishuan (140.118.138.42), 04/28/2017 15:36:09







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP