1202:Pell数列
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
Pell数列a1,a2,a3,...的定义是这样的,a1=1,a2=2,...,an=2an−1+an−2(n>2)。
给出一个正整数 k,要求Pell数列的第 k项模上 32767
是多少。
【输入】
第1行是测试数据的组数 n,后面跟着 n行输入。每组测试数据占 1行,包括一个正整数k(1≤k<1000000)。
【输出】
n行,每行输出对应一个输入。输出应是一个非负整数。
【输入样例】
2
1
8
【输出样例】
1
408
【来源】
No
1. #include<stdio.h> 2. #include<iostream> 3. #include<cstring> 4. using namespace std; 5. int s[1000001]={0}; 6. int pell(int a) 7. { 8. if(s[a]!=0) return s[a]; 9. if(a==1) return s[1]=1; 10. if(a==2) return s[2]=2; 11. return s[a]=(2*pell(a-1)%32767+pell(a-2))%32767; 12. } 13. int main() 14. { 15. for(int i=1;i<=1000000;i++) pell(i); 16. int n,m; 17. cin>>n; 18. for(int i=1;i<=n;i++) { 19. cin>>m; 20. cout<<s[m]<<endl; 21. } 22. return 0; 23. }