プログラマメモ2 - programmer no memo2

poj 1003 2007/09/02


pojです。

ハングオーバーですね。よくわかってないですが。

はじめにテーブルを作成してデータを用意してやっています。

1/2,1/3,1/4,1/5,1/6,1/7,1/8...
この数列の足し算なんていうんだろう?

実は何故解けたのかよくわっていない。
はじめ電卓で、計算して試していたりしたのだけども、プログラム書いたら、すぐに解けた...

関連


package p1003;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

public static void main(String[] args) throws IOException {

double[] t = t(274);

BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
String line;
while ((line = reader.readLine()) != null && !"0.00".equals(line)) {
double d = Double.parseDouble(line);
// System.out.println(d);
int n = 1;
if (d < t[0]) {
p(1);
continue;
}

for (int i = 0; i < t.length; i++) {
if (t[i] < d)
continue;
n = i + 1;
// System.out.println(">>"+i);
p(n);
break;
}

}

}

static void p(int n) {
System.out.println(n + " card(s)");
}

static double[] t(int i) {
double[] t = new double[i - 1];
double sum = 0.0;
for (int d = 2; d <= i; d++) {
sum += 1.0 / (double) d;
t[d - 2] = sum;
// System.out.println(t[d - 2]);
}

return t;
}
}

: