首页 > 编程知识 正文

nowcoder girl,nowcoder面试能切换页面吗

时间:2023-05-06 09:35:58 阅读:261421 作者:2095

链接:https://www.nowcoder.com/questionTerminal/0984adf1f55a4ba18dade28f1ab15003
来源:牛客网
 

NowCoder最近在研究一个数列:
* F(0) = 7
* F(1) = 11
* F(n) = F(n-1) + F(n-2) (n≥2)
他称之为NowCoder数列。请你帮忙确认一下数列中第n个数是否是3的倍数。

 

输入描述:

输入包含多组数据。每组数据包含一个整数n,(0≤n≤1000000)。

输出描述:

对应每一组输入有一行输出。如果F(n)是3的倍数,则输出“Yes”;否则输出“No”。

一开始我用的这个方法,发现运行超时:

#include <stdio.h>#include <stdlib.h>#include <math.h>/***** F(0) = 7* F(1) = 11* F(n) = F(n-1) + F(n-2) (n≥2)*****/int F(int i){ if(i==0) return 7; else if(i==1) return 11; else return F(i-1)+F(i-2);}void main(){ int a[500],b; while(scanf("%d",&b)!=EOF){ if(F(b)%3==0) printf("Yesn"); else printf("Non"); }}

后来看了下别人的解法,发现需要找一下规律:

即 (N-2)%4==0 的时候F(n)能被3整除

所以代码为:

#include<stdio.h>int main(void){ int input; while(scanf("%d", &input)!=EOF){ if(2 == input % 4){ printf("Yesn"); } else{ printf("Non"); } } return 0;}

顿时傻眼。。。感谢发现规律的作者

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。