1. 程式人生 > >HDU 1021(斐波那契數與因子3 **)

HDU 1021(斐波那契數與因子3 **)

判斷 pla 斐波那契 因子 show hid 分享 close one

題意是說在給定的一種滿足每一項等於前兩項之和的數列中,判斷第 n 項的數字是否為 3 的倍數。

斐波那契數在到第四十多位的時候就會超出 int 存儲範圍,但是題目問的是是否為 3 的倍數,也就是模 3 值為 0 ,考慮到余數只有0,1,2,而且每項由前兩項求和得到,也就是說余數一定會出現循環的規律,從首項開始,前 8 項模 3 的結果是:1 2 0 2 2 1 0 1,接下來的兩項模 3 的結果仍是 1 2 ,那麽整個序列就呈現出以 8 為周期的特點,只要模 8 的結果為 3 或者 7 就輸出 yes,否則輸出 no,註意序列是從第 0 項開始的,所以 n 每次都要減掉 1.

技術分享圖片
 1 #include <cstdio>
 2
int main() 3 { 4 int n; 5 while(~scanf("%d",&n)) 6 { 7 // if(n == 0 || n == 1) puts("no"); 8 // else 9 // { 10 // n -= 2; 11 // if(n % 4 == 0) puts("yes"); 12 // else puts("no"); 13 // } 14 n++; 15 if(n%8
== 3 || n%8 == 7) puts("yes"); 16 else puts("no"); 17 } 18 return 0; 19 }
View Code

HDU 1021(斐波那契數與因子3 **)