1递归
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int pell(int a){
if(a==2)
return 2;
if(a==1)
return 1;
return 2*pell(a-1)+pell(a-2);
}
int main(){
int n,i,t;cin >>n;
int a[n];
for(i=0;i<n;i++){
cin >>t;
a[i]=pell(t)%32767;
}
for(i=0;i<n;i++)
cout <<a[i]<<endl;
}
Time Limit Exceeded
2先计算出
#include <iostream>
#include <cstdio>
using namespace std;
const int M = 1000010;
int a[M];
int main()
{
int n;
a[1] = 1;
a[2] = 2;
for(int i = 3; i < M; i++)
a[i] = ( 2 * a[i-1] + a[i-2] ) % 32767;
cin >>n;
for(int i = 0;i < n; i++) {
int k;
cin >> k;
cout << a[k] << endl;
}
}
通过