# 斐波那契的整除 |
||
|
||
# description | ||
|
||
# input | ||
|
||
# output | ||
|
||
# sample_input | ||
|
||
# sample_output | ||
|
这道题数据量很大,直接计算必然溢出,因此考虑是否有循环节
斐波那契数对3的余数:d(n)=(d(n-1)+d(n-2))%3
写出来即为:1 1 2 0 2 2 1 0 1 1 2 ……
观察到f(n)能被3整除当且仅当n能被4整除
同理可发现f(n)能被4整除当且仅当n能被6整除
所以f(n)能被12整除当且仅当n能被4和6的最大公约数(即12)整除
代码很容易写出~~
[C++]
1 #include<iostream>
2
3 using namespace std;
4
5 int main()
6 {
7 long n;
8 while(cin>>n)
9 {
10 if(n%12==0)
11 cout<<"YES"<<endl;
12 else if(n%4==0)
13 cout<<"3"<<endl;
14 else if(n%6==0)
15 cout<<"4"<<endl;
16 else
17 cout<<"NO"<<endl;
18 }
19
20 return 0;
21 }
原文链接: https://www.cnblogs.com/lzj-0218/archive/2013/04/30/3051546.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86597
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!