dobbiamo trovare il termine ennesima di questa serie http://oeis.org/A028859ennesima termine della serie di
n < = 1000000000
risposta dovrebbe essere MODULO 1000000007
ho scritto il codice, ma limite di tempo supera quando na è un numero enorme.
#include<iostream>
using namespace std
int main()
{
long long int n;
cin>>n;
long long int a,b,c;
a=1;
b=3;
int i;
for(i=3;i<=n;i++)
{
c=(2ll*(a+b))%1000000007;
a=b;
b=c;
}
cout<<c;
}
Qualunque possibilità si potrebbe incollare in un campione di codice più pulito di questo, utilizzando una rientranza adeguata ed evitando lo spazio bianco eccessivo? –
Cosa c'entra questo con la programmazione dinamica? – Mathias
Prova la versione ricorsiva di questo algoritmo e capirai come questo è un algoritmo di programmazione dinamica. Fondamentalmente, memorizziamo i valori calcolati di n-1 e n-2. Diciamo, è una versione fondamentale di DP. –