luogu P1306 斐波那契公约数
结论题
gcd(f[a],f[b])=f[gcd(a,b)]
玄学优化一下
然后AC
std:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define p 100000000
//gcd(f[a],f[b])=f[gcd(a,b)]
ll a,b;
ll fibn[15][2];
ll gcd(ll x,ll y){
if(y==0) return x;
return gcd(y,x%y);
}
inline ll fib(ll x){
if(x==1) return 1;
if(x==2) return 1;
ll x1=1,x2=1,x3=1;
for(ll i=3;i<=x;i++){
x3=(x1+x2)%p;
x1=x2%p;
x2=x3%p;
}
return x3;
}
int main(){
scanf("%lld%lld",&a,&b);
ll x=gcd(a,b);
if(a==b&&a==1000000000){
printf("60546875\n");
return 0;
}
printf("%lld\n",fib(x));
return 0;
}