#include <bits/stdc++.h>
using namespace std;
/*
*由于这个数列一直相乘,会导致数据足够大,所以以边去余数的形式来降低数据大小
*/
#define MAX 1000001
int a[MAX] ;
int f(int i){
//递归出口
if(a[i] != 0) return a[i];
else if(i == 1) a[i] = 1;
else if(i == 2) a[i] = 2;
//不能用a[i-1] * 2 + a[i-2] 这样来写 应为a[i-1] a[i-2]还不知道
else a[i] = (2*f(i-1))%32767 + (f(i-2) % 32767);
return a[i];
}
int main()
{
int i;
scanf("%d",&i);
f(i);
printf("%d",f(i));
return 0;
}
C++ pell
最新推荐文章于 2024-03-06 13:41:15 发布