首页 > 代码库 > NEFU115 斐波那契的整除 【整除】
NEFU115 斐波那契的整除 【整除】
题目连接:
http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=115
题目大意:
斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为
1, 1,2 ,3 ,5 ,8,13,21,34…,问题是:若 f(n)能被3整除,则输出“3”; 若f(n) 能被4整
除,则输出“4”;如果能被12整除,输出“YES”;否则输出“NO”。
思路:
若f(n)能被12整除,则f(n)肯定能被3和4整除,这时候输出"YES",如果f(n)不能被12整除了,再判断
f(n)能被3整除,还是被4整除。都不满足了,再输出"NO"。但是,数据规模是1000000000,数据量
较大,直接计算会溢出,所以考虑是否存在循环节。得出:当且仅当n能被4整除,f(n)能被3整除。当
且仅当n可以被6整除,f(n)能被4整除。由此可得:当且仅当n可以被12整除(4、6的最小公倍数),f(n)
能被12整除。
AC代码:
#include<iostream> #include<algorithm> using namespace std; int main() { int N; while(cin >> N) { if(N % 12 == 0) cout << "YES" << endl; else { if(N % 4 == 0) cout << "3" << endl; else { if(N % 6 == 0) cout << "4" << endl; else cout << "NO" << endl; } } } return 0; }
NEFU115 斐波那契的整除 【整除】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。