再战斐波那契

A. 再战斐波那契

单点时限: 1.0 sec

内存限制: 512 MB

z 学会了斐波那契和 gcd 后,老师又给他出了个难题,求第N个和第M个斐波那契数的最大公约数,这可难倒了小z ,不过在小z 的再三请求下,老师又告诉他了个条件,gcd(N,M)[1,90]
可是,笨拙的小z 还是不会,于是请求你帮他解答这个问题。

已知:

Fibonacci[i]={i,Fibonacci[i1]+Fibonacci[i2],i<=1i>1

输入格式

输入包括 T 组,T[1,10]. 
接下来 T 行,每行两个整数 N,M, 表示斐波那契的第 N 项和第 M 项,(N,M[1,1018]).

输出格式

输出包含 T 行,每行输出一个整数.

样例

input
3
1 2
2 3
3 4
output
1
1
1
思路::毫无思路  就一个公式 __gcd(f(n),f(m))=f(__gcd(n,m));
ac代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll arr[100];
int main()
{
    int t;
    cin>>t;
    for(int i=0;i<=90;i++){
        if(i==0) arr[i]=0;
        else if(i==1) arr[i]=1;
        else arr[i]=arr[i-1]+arr[i-2];
    }
    while(t--){
        ll n,m;
        cin>>n>>m;
        ll s=__gcd(n,m);
        cout<<arr[s]<<endl;
    }
    return 0;
}
 
原文地址:https://www.cnblogs.com/Accepting/p/11258687.html