Получение ошибки времени выполнения. Пожалуйста, помогите.
Дана формула для вычисления F как
F=F(n-1)+F(n-2)+F(n-1)*F (n-2).
мы должны найти F для значений n.
Для небольших значений . формула работает, но для больших значений мне придется манипулировать ею.
Что я уже пробовал:
#include<bits/stdc++.h> using namespace std; int f(long long int F0, long long int F1,long long int n); #define M 1000000007 int main() { long long int F1,F0,F, T,N; cin >> T; while(T--) { cin>>F0>>F1>>N; F=f(F0,F1,N); cout << F%M << endl; } return 0; } int f(long long int F0, long long int F1,long long int n) { if (n==0) return F0%M; else if(n==1) return F1%M; else { return (int)(((int)pow(F0,f(F0,F1,n-1))%M) * ((int)pow(F1,f(F0,F1,n)))%M)%M; } }
Patrice T
"Ошибка времени выполнения" не является информативной.
Что такое сообщение об ошибке?
nv3
Название "Фибоначчи" вводит в заблуждение. Это не Числа Фибоначчи, у которых нет термина "+ Fn-1 * Fn-2". Следовательно, числовые ряды растут даже быстрее, чем ряды Фибоначчи! Значение: N не может быть выбрано очень большим, и вы придете к пределам представления чисел в 32-битном int.
Member 12959092
хорошо, я обновил код, но он не работает даже для небольших значений. код ошибки не отображается . ideone выдает только ошибку времени выполнения.
Richard MacCutchan
Пожалуйста, не ждите, что мы догадаемся, что происходит. Какая строка кода выдает ошибку, на каких значениях переменных и каков точный текст сообщения об ошибке?
Richard MacCutchan
Написание такого заявления, какreturn (int)(((int)pow(F0,f(F0,F1,n-1))%M) * ((int)pow(F1,f(F0,F1,n)))%M)%M;
действительно напрашивается на неприятности.