题解 | #数列#
数列
https://www.nowcoder.com/practice/1843c3b052984e3f98c68935ea3c0d79
#include <stdio.h> int main() { long n; long arr[100000] = {1, 2}; //先生成数列,注意这里存入的是取模后的结果,否则数据会越界 for (int i = 2; i < 100000; i++) { arr[i] = (arr[i-1] * 2 + arr[i-2]) % 32767; } scanf("%d", &n);//获取测试用例个数 for (int i = 0; i < n; i++) { int num; scanf("%d", &num); printf("%ld\n", arr[num-1]);//循环打印每个测试用例的对应结果就行 } return 0; }
当测试用例有多个的情况下,每次重新计算第k个数据,效率就要差很多了,毕竟每个数都要从头重新计算一遍。因此程序进入后首先可以先生成一个较大的数列,后边测试用例中需要第几个直接取出即可