→ 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