poj 3077 rounders
2007/11/12
java
3077 -- Rounders
丸めの問題です。
いつものごとく簡単そうな問題を選んでいます。
正直どうしていいかわからなくて、ごちゃごちゃしていたらacceptedされた感じです。
BigDecimalを使ってます。この使い方がいいのかどうかはわかりません。
precisionは精度。
HALF_UPの説明は下記
「もっとも近い数字」に丸めるモードです。ただし、両隣りの数字が等距離の場合は切り上げます。破棄される小数部が 0.5 以上の場合は RoundingMode.UP のように動作し、それ以外の場合は RoundingMode.DOWN のように動作します。これは我々の大半が小学校で習った丸めモードのことです。jdk1.5 javadoc RoundingMode
package p3077_Rounders;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (0 < n--) {
int a = scanner.nextInt();
System.out.println(round(a));
}
}
static int round(int a) {
BigDecimal decimal = new BigDecimal(a);
for (int i = decimal.precision() - 1; 1 <= i; i--)
decimal = decimal.round(new MathContext(i, RoundingMode.HALF_UP));
return decimal.intValue();
}
}
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (0 < n--) {
int a = scanner.nextInt();
System.out.println(round(a));
}
}
static int round(int a) {
BigDecimal decimal = new BigDecimal(a);
for (int i = decimal.precision() - 1; 1 <= i; i--)
decimal = decimal.round(new MathContext(i, RoundingMode.HALF_UP));
return decimal.intValue();
}
}
: