Bài viết phổ biến của tác giả
- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi đang cố gắng tính toán mô đun, có thể rất lớn: lên tới 10^18, là số Fibonacci thứ nĐây là mã của tôi, nó hoạt động tốt với số lượng nhỏ, nhưng đối với số lượng lớn, nó sẽ ném OutOfMemoryError hoặc NegativeArraySizeException.
nhập java.util.*;
lớp công khai FibonacciHuge {
riêng tư tĩnh dài getFibonacciHugeFast(long n, long m) {
long[] arr = new long[(int) n + 1];
mảng[0] = 0;
mảng[1] = 1;
cho (int i = 2; i < n + 1; i++) {
mảng[i] = (arr[i - 1] + mảng[i - 2]) % m;
}
trả về mảng[(int) n];
}
public static void main(String[] args) {
Máy quét máy quét = Máy quét mới (System.in);
dài n = scanner.nextLong();
dài m = scanner.nextLong();
System.out.println(getFibonacciHugeFast(n, m));
}
}
câu trả lời hay nhất
Dưới đây là giải thích cho hai trường hợp ngoại lệ/lỗi của bạn.
long[] arr = new long[(int) n + 1];
). Đọc cái này:Các kiểu dữ liệu nguyên thủy . (về cơ bản bạn tràn tại một số điểm và số nguyên kết quả là âm)
Về java - Fibonacci n mod m, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/39606533/
Tôi là một lập trình viên xuất sắc, rất giỏi!