2920: 【作】练67.1  斐波那契数列

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:24 解决:8

题目描述

斐波那契数列是指这样的数列:数列的第一个和第二个数都为$1$,接下来每个数都等于前面$2$个数之和。给出一个正整数$a$,要求斐波那契数列中第$a$个数对$1000$取模的结果是多少。

输入

第1行是测试数据的组数$n$,后面跟着$n$行输入。每组测试数据占$1$行,包括一个正整数$a$($1≤a≤1000000$)。

输出

$n$行,每行输出对应一个输入。输出应是一个正整数,为斐波那契数列中第$a$个数对$1000$取模得到的结果。

样例输入 复制

4
5
2
19
1

样例输出 复制

5
1
181
1

提示

#include<iostream>

using namespace std;
int n;
int a[1000005], b[1000005];
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    b[1] = 1;
    for (int i = 2; i <= 1000000; i++) {
        b[i] = (b[i - 1] + b[i - 2]) % 1000;
    }
    for (int i = 1; i <= n; i++) {
        cout << b[a[i]] << endl;
    }
    return 0;
}