#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 1000010
using namespace std;
int a[N];
int main()
{
int n,k;
a[1]=1;
a[2]=2;
for(int i=3;i<=N-10;i++)
a[i]=(2*a[i-1]+a[i-2])%32767;
cin>>n;
while(n--)
{
cin>>k;
cout<<a[k]<<endl;
}
return 0;
}
这题用递归会错的
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
const int mod=32767;
long long int f(int n)
{
if(n==1) return 1;
if(n==2) return 2;
return (f(n-1)*2+f(n-2))%mod;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
cout<<f(n)<<endl;
}
return 0;
}