1.链接地址:
http://bailian.openjudge.cn/practice/2786
2.题目:
总Time Limit:
- 3000ms
Memory Limit:- 65536kB
Description
- Pell数列a 1, a 2, a 3, ...的定义是这样的,a 1 = 1, a 2 = 2, ... , a n = 2 * a n − 1 + a n - 2 (n > 2)。 给出一个正整数k,要求Pell数列的第k项模上32767是多少。
Input- 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1 ≤ k < 1000000)。
Output- n行,每行输出对应一个输入。输出应是一个非负整数。
Sample Input- Sample Output
218 1408
3.思路:
打表法,求出可能结果
4.代码:
1 #include2 #include 3 4 #define MAX 1000000 5 #define MODE_NUM 32767 6 7 using namespace std; 8 9 10 int arr_pell[MAX];11 12 int main()13 {14 //freopen("C://input.txt","r",stdin);15 16 int i;17 18 arr_pell[0] = 1;19 arr_pell[1] = 2;20 for(i = 2; i < MAX; ++i) arr_pell[i] = (2 * arr_pell[i - 1] + arr_pell[i - 2]) % MODE_NUM;21 22 int n;23 cin >> n;24 25 int k;26 while(n--)27 {28 cin >> k;29 cout << arr_pell[k - 1] << endl;30 }31 32 return 0;33 }