/* 二分探索の比較回数の平均の計算 */ #include main() { int i; unsigned long u = 2; for (i=2; i<27; i++) { u <<= 1; u += (1ul << i) + (1ul << (i-1)) - 1; printf("%d %lu, %f\n", i, u, (double)u / ((1ul << i) - 1)); } }