作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] 取平均-[兩兩除二] 與 [加總除]
時間Sat Sep 10 13:23:40 2016
[兩兩除二][加總除]兩者效能上有影響嗎~
或者有更好的方法嗎~
看過除法好像很耗費資源
兩兩相除會因為做太多次而影響效能嗎?
感覺上未知之後是否輸入會變大或變多
(避免到時候益位)兩兩相除是比較好的做法?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.147.79
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1473485023.A.3D4.html
※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 13:31:27
1F:→ Schottky: 你怕 32-bit integer 溢位就用 64-bit interger 免煩惱 09/10 13:41
2F:→ Schottky: 什麼叫兩兩除二我是聽不懂,但你確定這方法正確嗎? 09/10 13:41
3F:→ 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;
}
4F:→ CRXD: 兩兩除二的話如果只有奇數個資料怎麼辦啊? 09/10 13:59
5F:→ CRXD: 加總怕溢位只要確定你的資料不會是負的就unsigned long long 09/10 13:59
6F:→ CRXD: 給他開下去啊 09/10 13:59
了解,一時也沒想到還有long long long
※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 14:09:53
7F:→ Schottky: 先不說奇數,六個和十個也沒辦法啊 09/10 14:22
8F:→ Schottky: long long 如果還不夠,你還可以用 GNU MP XDDDD 09/10 14:28
9F:推 LiloHuang: boost::multiprecision 09/10 15:01
10F:→ firejox: 避免加法溢位 可以用疊代 M_{n-1}+(x_n-M_{n-1})/n=M_n 09/11 22:23
11F:→ firejox: M_n代表連續n個的平均 09/11 22:24
12F:→ wope: C n取m當系數 改演算法走一次資料就收工了 09/13 00:34