题解 | #数列#

数列

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个数据,效率就要差很多了,毕竟每个数都要从头重新计算一遍。因此程序进入后首先可以先生成一个较大的数列,后边测试用例中需要第几个直接取出即可

全部评论

相关推荐

05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在...:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务