题解 | #数列#

数列

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 16:15
你知道对于一个平常不接电话,从来不发语音,只打字交流的人来说电话面有多恐怖吗....刚刚亲眼目睹了舍友电话面...她甚至还在吃饭...就这么水灵灵的打过来开始问了...感觉如果是面对面我真的会紧张到跪下来给面试官磕一个...
一只ikun:额,其实没那么恐怖,最难迈开的是第一步,相信我,你面完第一次后面就不怕了。第一次面试我还想着找个自习室面试,到后面我打着游戏突然来电话我就直接面试了
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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