| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1001 为什么老是不能AC?!import java.math.BigDecimal;
import java.util.Scanner;
/**
* @author ZhiJunZhang
* @category 1001
* @version use DigDecimal
* @date 2009-12-01
*/
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
String result = new String();
int n = scan.nextInt();
result = calculate(str, n);
System.out.println(trimZero(result));
}
public static String calculate(String str, int n) {
BigDecimal big = new BigDecimal(str);
BigDecimal result = new BigDecimal("1");
for (int i = 1; i <= n; i++) {
result = result.multiply(big);
}
return result.stripTrailingZeros().toPlainString();
}
public static String trimZero(String str) {
String result = new String();
char[] strArr = str.toCharArray();
int length = strArr.length;
int point = str.indexOf(".");
int p = point == -1 ? length : point;
int leftZeroNum = 0;
int rightZeroNum = 0;
// 小数
if (p != length || p != length - 1) {
if (p != 0) {
// trim left
for (int i = 0; i <= p; i++) {
char currBit = strArr[i];
if (currBit == '0') {
leftZeroNum++;
} else {
break;
}
}
}
// trim right
for (int j = length - 1; j >= p; j--) {
char currBit = strArr[j];
if (currBit == '0') {
rightZeroNum++;
} else if (currBit == '.') {
rightZeroNum++;
break;
} else {
break;
}
}
result = new String(strArr, leftZeroNum, length
- (rightZeroNum + leftZeroNum));
}
// 整数
else {
int pos = str.indexOf(".");
result = new String(strArr, 0, pos);
}
return result;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator