题目
思路
重要性质:,当中
表示斐波那契数列的第
项。
题目中保证了 直接递推求就可以了。
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
typedef long long ll;
ll t,n,m,fib[47];
inline void read(ll &T) {
ll x=0;bool f=0;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
T=f?-x:x;
}
ll gcd(ll a,ll b) {
return b?gcd(b,a%b):a;
}
int main() {
read(t);fib[1]=1,fib[2]=1,fib[3]=2;
for(int i=4;i<=46;++i) fib[i]=fib[i-1]+fib[i-2];
while(t--) {
read(n),read(m);
if(m>n) std::swap(n,m);
std::cout<<fib[gcd(n,m)]<<'\n';
}
return 0;
} 
京公网安备 11010502036488号