| ||||||||||
| 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题,我已经测试了好多数据,在自己机器上都是对的,怎么提交上去都是Runtime Error?import java.util.Scanner;
class BigNumber {
private final int LENGTH = 200;
private int[] integer = new int[LENGTH];
private int[] decimal = new int[LENGTH];
private int exp;
public BigNumber(String input) {
String[] s = input.split(" ");
exp = Integer.parseInt(s[1]);
String[] str = s[0].split("\\.");
if (str.length == 2) {
for (int i = 0; i < str[0].length(); i++) {
integer[LENGTH - str[0].length() + i] = str[0].charAt(i) - '0';
}
for (int i = 0; i < str[1].length(); i++) {
decimal[i] = str[1].charAt(i) - '0';
}
} else if (str.length == 1) {
for (int i = 0; i < str[0].length(); i++) {
integer[LENGTH - str[0].length() + i] = str[0].charAt(i) - '0';
}
} else if (str.length > 2) {
System.out.println("Not a correct number");
}
}
public BigNumber(int[] integer, int[] decimal) {
this.integer = integer;
this.decimal = decimal;
}
public int getIntegetBitAtIndex(int i) {
return integer[i];
}
public int getDecimalBitAtIndex(int i) {
return decimal[i];
}
public void pow() {
int[] tempInteger = getInteger();
int[] tempDecimal = getDecimal();
if (this.exp == 0) {
for (int i = 0; i < LENGTH; i++) {
integer[i] = 0;
decimal[i] = 0;
}
integer[(LENGTH - 1)] = 1;
}
for (int i = 0; i < this.exp - 1; i++) {
int[] resultInteger = new int[LENGTH];
int[] resultDecimal = new int[LENGTH];
for (int j = 0; j < integer.length; j++) {
if (integer[j] != 0) {
for (int k = 0; k < tempInteger.length; k++) {
if (tempInteger[k] != 0)
resultInteger[j - (LENGTH - 1) + k] += integer[j]
* tempInteger[k];
}
for (int m = 0; m < tempDecimal.length; m++) {
if (tempDecimal[m] != 0)
if (j + m - (LENGTH - 1) >= 0) {
resultDecimal[j + m - (LENGTH - 1)] += integer[j]
* tempDecimal[m];
} else {
resultInteger[j + m + 1] += integer[j]
* tempDecimal[m];
}
}
}
}
for (int j = 0; j < decimal.length; j++) {
if (decimal[j] != 0) {
for (int k = 0; k < tempInteger.length; k++) {
if (tempInteger[k] != 0)
if (j + k - (LENGTH - 1) >= 0) {
resultDecimal[j + k - (LENGTH - 1)] += decimal[j]
* tempInteger[k];
} else {
resultInteger[j + k + 1] += decimal[j]
* tempInteger[k];
}
}
for (int m = 0; m < tempDecimal.length; m++)
if (tempDecimal[m] != 0)
resultDecimal[m + j + 1] += decimal[j]
* tempDecimal[m];
}
}
for (int j = (LENGTH - 1); j >= 1; j--) {
if (resultDecimal[j] != 0) {
int temp = resultDecimal[j];
resultDecimal[j] = resultDecimal[j] % 10;
resultDecimal[j - 1] += previousBit(temp);
}
}
if (resultDecimal[0] != 0) {
int temp = resultDecimal[0];
resultDecimal[0] = resultDecimal[0] % 10;
resultInteger[(LENGTH - 1)] += temp / 10;
}
for (int j = (LENGTH - 1); j >= 0; j--) {
if (resultInteger[j] != 0) {
int temp = resultInteger[j];
resultInteger[j] = temp % 10;
resultInteger[j - 1] += temp / 10;
}
}
integer = resultInteger;
decimal = resultDecimal;
}
}
public int[] getInteger() {
return integer;
}
public int[] getDecimal() {
return decimal;
}
private int previousBit(int bit) {
if (bit < 10)
return 0;
else
return bit / 10;
}
public void print() {
boolean flag = false;
for (int i = 0; i < LENGTH; i++) {
if (integer[i] == 0 && !flag)
continue;
if (integer[i] != 0) {
flag = true;
}
System.out.print(integer[i]);
}
boolean outputDot = false;
int temp = -1;
for (int j = (LENGTH - 1); j >= 0; j--) {
if (decimal[j] != 0) {
temp = j;
outputDot = true;
break;
}
}
if (outputDot)
System.out.print(".");
for (int i = 0; i <= temp; i++)
System.out.print(decimal[i]);
if(!flag && temp==-1)
System.out.print(0);
System.out.println();
}
public int getExp() {
return exp;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str;
while (scanner.hasNextLine()) {
str = scanner.nextLine();
BigNumber bn = new BigNumber(str);
bn.pow();
bn.print();
}
}
}
我在网上搜到了一个测试数据的input.txt,然后和output.txt对比了的,一摸一样,但就是提交上去有runtime error.
希望大家帮我看看。
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator