1491:Pi

keyword

シミュレーション C++

概要

適当に数を選ぶと全ての組合せの内互いに素である確率は6/π^2に収束するらしい。実際に数字が50個程度与えられるときπの値を見積もる問題。ただし互いに素である数が一組もなかったらその旨出力すること。
サイズが小さいので単に(n,2)通り試すだけ。

int main(){
    int n, ns[52], i, j, cnt;

    while(scanf("%d",&n)){
        if(!n) break;
        cnt = 0;
        REP(i,n) scanf("%d",ns+i);
        REP(i,n)for(j=i+1;j<n;j++)if(__gcd(ns[i],ns[j])==1) cnt++;
        if(cnt) printf("%.6f\n",sqrt((double)n*(n-1)*0.5/cnt*6.0));
        else printf("No estimate for this data set.\n");
    }

    return 0;
}