poj 1003
2007/09/02
poj
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;
}
}
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;
}
}
: