AOJ-AHU-OJ-401 Fibonacci GCD
生活随笔
收集整理的這篇文章主要介紹了
AOJ-AHU-OJ-401 Fibonacci GCD
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Fibonacci & GCD
Time Limit: 1000 ms???Case Time Limit: 1000 ms???Memory Limit: 64 MB
?
Description
Fibonacci數(shù)列之所以強大是因為它可以和很多東西結(jié)合,這次Fibonacci找來了GCD(最大公約數(shù))來和自己組合,這給我們帶來的問題是對于Fibonacci數(shù)列中的任意兩項F(m)和F(n),我們要求出它們的最大公約數(shù)
4 8
0 0
3
?
?
Input 輸入包括多組測試數(shù)據(jù),每行包括2個正整數(shù)m,n( 1 =< m,n =< 10^9)表示Fibonacci的第m,n項,輸入以 0 0 結(jié)束?
Output 每組輸入對應(yīng)一個輸出即 GCD( F(m) , F(n) ),因為結(jié)果可能比較大,輸出其 mod 10003的值?
Sample Input| Original | Transformed |
?
Sample Output| Original | Transformed |
?
Source Large的高精度 NO.4 ——————————————————————分割線—————————————————————— 思路:本題牽扯到斐波那契的兩個定理。一個是斐波那契作為初等函數(shù),尾數(shù)具有循環(huán)性,要找到循環(huán)節(jié)。利用循環(huán)節(jié),來極大地縮小需要存儲數(shù)據(jù)的數(shù)組大小。即優(yōu)化空間。所謂循環(huán)節(jié),就是從第i項和第i+1項開始尾數(shù)變成0和1。 另一個是最大公約數(shù)(GCD)定理。GCD( fib[n], fib[m] ) == fib[ GCD(n, m) ]。 代碼如下: #include <stdio.h> int fib[5711]; int GCD(int a, int b){if(!b)return a;return GCD(b, a % b); } int main(){int m, n, g;int i;fib[0] = 1;fib[1] = 1;for(i = 2;;i++){fib[i] = (fib[i-1] + fib[i-2]) % 10003;if(fib[i-1] == 0&&fib[i] == 1)break;}i--;while(scanf("%d%d", &m, &n) != EOF&&m||n){g = GCD(m, n);g--;printf("%d\n", fib[g%i]);}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的AOJ-AHU-OJ-401 Fibonacci GCD的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【步进电机】基于L297A 大功率设计的
- 下一篇: 嵌入式系统学习---------2.嵌入