AOJ 10026 - Standard Deviation

 (s_ {i} - m)^2はm(平均)がわからないと計算できない.
平均をもとめるには全得点がわからないといけない.
そうすると,すべての点を配列として保持しないといけない.
それはめんどうなので, \sum^{n}_{i=1}(s_i-m)^2=\sum^{n}_{i=1}s_i^{2}-2m \sum^{n}_{i=1}s_i+nm^2を利用した.

#include<math.h>
main(){
	int n, i, s;
	double a, b, c, m, alpha_s;
	while(scanf("%d", &n), n){
		a=b=c=m=0;
		for(i=n;i--;){
			scanf("%d", &s);
			a += s*s;
			b += s;
		}
		m = b/n;
		b *= -2 * m;
		c += n * m * m;
		alpha_s = (a+b+c)/n;
		printf("%.8f\n", sqrt(alpha_s));
	}
	return 0;
}

はてなダイアリーってtex使えたんですね.

standard deviation: 標準偏差