Tôi đang viết chương trình để tính toán phần mở rộng thập phân trên số 103993/33102
và tôi muốn in ra tất cả các số thập phân sau tùy thuộc vào số người dùng nhập. Nó chạy nhanh chóng cho tất cả số lượng lên đến 10^5
nhưng nếu nhập 10^6
vào chương trình mất khoảng 5 phút để in ra một câu trả lời. Làm thế nào tôi có thể tăng tốc độ? Tôi đã thử hai cách tiếp cận khác nhau bằng cách sử dụng BigDecimal
và phương pháp khác bằng cách sử dụng các chuỗi và cả hai đều không hoạt động hiệu quả.Chương trình mở rộng thập phân chạy rất chậm đối với các đầu vào lớn
public static void main(String[] args) throws NumberFormatException,
IOException {
// BigDecimal num1 = new BigDecimal(103993);
// BigDecimal num2 = new BigDecimal(33102);
String repNum = "415926530119026040722614947737296840070086399613316";
// pw.println(num.toString());
String sNum = "3.1";
// pw.println(repNum.length());
int cases = Integer.parseInt(br.readLine());
int dec;
for (int i = 0; i < cases; i++) {
sNum = "3.1";
dec = Integer.parseInt(br.readLine());
if (dec == 0)
pw.println("3");
else if (dec <= 52) {
sNum += repNum.substring(0, dec - 1);
pw.println(sNum);
} else {
while (dec > 52) {
sNum += repNum;
dec -= 51;
}
sNum += repNum.substring(0, dec - 1);
pw.println(sNum);
}
// pw.println(num1.divide(num2, dec,
// RoundingMode.FLOOR).toString());
}
}
'dec' và' cases' là gì? – Joni
dec là số thập phân bạn đang mở rộng và các trường hợp là nếu bạn muốn in số thập phân mở rộng của số theo nhiều cách, Ví dụ nếu tôi nhập 2 4 6 nó sẽ in ra số được mở rộng đến 4 chữ số sau đó sẽ in nó ra một lần nữa mở rộng đến thứ 6 –