斐波那契的整除
Description
已知斐波那契數(shù)列有如下遞歸定義,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前幾項(xiàng)可以表示為1, 1,2 ,3 ,5 ,8,13,21,34…,現(xiàn)在的問(wèn)題是想知道f(n)的值是否能被3和4整除,你知道嗎?
Input
輸入數(shù)據(jù)有若干組,每組數(shù)據(jù)包含一個(gè)整數(shù)n(1< n <1000000000)。
Output
對(duì)應(yīng)每組數(shù)據(jù)n,若 f(n)能被3整除,則輸出“3”; 若f(n) 能被4整除,則輸出“4”;如果能被12整除,輸出“YES”;否則輸出“NO”。
Sample Input
4
6
7
12
Sample Output
3
4
NO
YES
原理:考慮是否有循環(huán)節(jié)(如果無(wú)限小數(shù)的小數(shù)點(diǎn)后,從某一位起向右進(jìn)行到某一位止的一節(jié)數(shù)字循環(huán)出現(xiàn),首尾銜接,稱(chēng)這種小數(shù)為循環(huán)小數(shù),這一節(jié)數(shù)字稱(chēng)為循環(huán)節(jié). 把循環(huán)小數(shù)寫(xiě)成個(gè)別項(xiàng)與一個(gè)無(wú)窮等比數(shù)列的和的形式后可以化成一個(gè)分?jǐn)?shù)),fn能被3整除,當(dāng)且僅當(dāng)n可以被4整除;fn能被4整除,當(dāng)且僅當(dāng)n可以被6整除;fn能被12整除,當(dāng)且僅當(dāng)n可以被12整除(4和6的最小公倍數(shù))
#include <iostream>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;elseif(n%6==0)cout<<"4"<<endl;elsecout<<"NO"<<endl;}}return 0; }總結(jié)
- 上一篇: Problem G: C语言习题 医生值
- 下一篇: 迷宫问题【广搜】