0
幾天前,我在編程挑戰中得到了這個問題。大型斐波那契與GCD
我只拿到一個測試情況下,在後端通過了20。這是我的解決方案
import java.util.Scanner;
class TestClass {
public static void main(String args[]) throws Exception {
Scanner s = new Scanner(System.in);
int size = s.nextInt();
int[] input = new int[size];
long[] fiboDp = new long[1000000];
fiboDp[0] = 0;
fiboDp[1] = 1;
for(int index = 2;index<1000000;++index) {
fiboDp[index] = (fiboDp[index-1]%1000000007+fiboDp[index-2]%1000000007)%1000000007;
}
int query = s.nextInt();
for(int index = 0; index < size; ++index) {
input[index] = s.nextInt();
}
long[][] dpans = new long[size][size];
for(int i = 0; i < size; ++i) {
long gcdAns = fiboDp[input[i]];
for(int j = i; j < size;++j) {
if(i == j) {
dpans[i][j] = gcdAns;
}
else {
dpans[i][j] = gcd(dpans[i][j-1],fiboDp[input[j]]);
}
}
}
while(query > 0) {
int left = s.nextInt();
left = left-1;
int right = s.nextInt();
right = right-1;
// long ansGCD = fiboDp[input[left]];
// for(int index =left ; index<= right;++index) {
// ansGCD = gcd(ansGCD,fiboDp[input[index]]);
// }
System.out.println(dpans[left][right]);
query--;
}
}
static long gcd(long a, long b) {
return b == 0? a : gcd(b,a%b);
}
}
我想我知道爲什麼我的代碼是錯誤的,因爲數組的元素大小是10^9斐波那契陣列尺寸可達到10^6。而且每當我訪問較大的索引時,都會發生數組越界的異常。但我不知道如何解決這個問題。還有其他方法嗎?
當然,你在這裏已經足夠長的時間知道,這樣的問題是不適合我們的格式。 –
儘管我已經在1年前提交了帳戶,但我通常不知道在哪裏提出這些問題。 https://meta.stackexchange.com/questions/129598/which-computer-science-programming-stack-exchange-do-i-post-in。在這裏,我已閱讀,我認爲這將是適當的地方問。如果沒有,那麼請指導我在哪裏問。謝謝 –
所以堆棧溢出是針對有關實際代碼的具體問題。你的問題太廣泛了。我建議,特別是鑑於這是一個編程挑戰,您需要花費一些時間在調試器中,並縮小問題範圍,使其不超過十行。 –