看板 C_and_CPP 關於我們 聯絡資訊
[兩兩除二][加總除]兩者效能上有影響嗎~ 或者有更好的方法嗎~ 看過除法好像很耗費資源 兩兩相除會因為做太多次而影響效能嗎? 感覺上未知之後是否輸入會變大或變多 (避免到時候益位)兩兩相除是比較好的做法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.147.79 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1473485023.A.3D4.html ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 13:31:27
Schottky: 你怕 32-bit integer 溢位就用 64-bit interger 免煩惱 09/10 13:41
Schottky: 什麼叫兩兩除二我是聽不懂,但你確定這方法正確嗎? 09/10 13:41
Schottky: 答案不正確就不必談效能啦~ 09/10 13:42
痾 表達不完整,等我一下寫個範例~ ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 13:51:34 阿~傻了QQ 實際做了發現沒這麼簡單 這樣會做太多次,想錯了 #include <iostream> using namespace std; int main(int argc, char const *argv[]){ double arr[]={4,5,6}; cout << "avg=" << (arr[0]+arr[1]+arr[2])/3 << endl; double temp1,temp2; temp1=(arr[0]+arr[1])/2; temp2=(arr[1]+arr[2])/2; cout << "avg=" << (temp1+temp2)/2 << endl; return 0; }
CRXD: 兩兩除二的話如果只有奇數個資料怎麼辦啊? 09/10 13:59
CRXD: 加總怕溢位只要確定你的資料不會是負的就unsigned long long 09/10 13:59
CRXD: 給他開下去啊 09/10 13:59
了解,一時也沒想到還有long long long ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 14:09:53
Schottky: 先不說奇數,六個和十個也沒辦法啊 09/10 14:22
Schottky: long long 如果還不夠,你還可以用 GNU MP XDDDD 09/10 14:28
LiloHuang: boost::multiprecision 09/10 15:01
firejox: 避免加法溢位 可以用疊代 M_{n-1}+(x_n-M_{n-1})/n=M_n 09/11 22:23
firejox: M_n代表連續n個的平均 09/11 22:24
wope: C n取m當系數 改演算法走一次資料就收工了 09/13 00:34