【luogu P1306 斐波那契公约数】 题解

题目链接:https://www.luogu.org/problemnew/show/P1306#sub

gcd(f[m],f[n]) = f[gcd(m,n)]

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 using namespace std;
 5 const int maxn = 1000001;
 6 long long n, m;
 7 long gcd(long long x, long long y)
 8 {
 9     if(x%y == 0) return y;
10     else return gcd(y,x%y);
11 }
12 long long f[maxn] = {0,1,1};
13 int main()
14 {
15     scanf("%lld%lld",&n,&m);
16     long long mn = gcd(n,m);
17     
18     for(int i = 3; i <= mn; i++)
19     f[i] = (f[i-1] + f[i-2])%100000000;
20     
21     printf("%lld",f[mn]);
22 }

 

posted @ 2018-04-02 14:33  Misaka_Azusa  阅读(224)  评论(0编辑  收藏  举报
Live2D