zoukankan      html  css  js  c++  java
  • 洛谷P1306 斐波那契公约数

    题目描述

    对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少?

    输入输出格式

    输入格式:

    两个正整数n和m。(n,m<=10^9)

    注意:数据很大

    输出格式:

    Fn和Fm的最大公约数。

    由于看了大数字就头晕,所以只要输出最后的8位数字就可以了。

    输入输出样例

    输入样例#1: 复制
    4 7
    输出样例#1: 复制
    1

    说明

    用递归&递推会超时

    用通项公式也会超时

    扩展欧几里得有一个非常重要的性质

    $$gcd(F[i],F[j])=F[gcd(i,j)]$$

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #define LL long long 
     5 using namespace std;
     6 const LL mod=100000000;
     7 const LL MAXN=5000001;
     8 inline LL read()
     9 {
    10     char c=getchar();LL x=0,flag=1;
    11     while(c<'0'||c>'9')    {if(c=='-')    flag=-1;c=getchar();}
    12     while(c>='0'&&c<='9')    x=x*10+c-48,c=getchar();return x*flag;
    13 }
    14 LL dp[MAXN];
    15 LL gcd(LL a,LL b)
    16 {
    17     return b==0?a:gcd(b,a%b);
    18 }
    19 int main()
    20 {
    21     LL n=read(),m=read();
    22     dp[1]=1;dp[2]=1;
    23     for(LL i=3;i<=5000000;i++)
    24         dp[i]=(dp[i-1]+dp[i-2])%100000000;
    25         
    26     LL p=gcd(n,m);
    27     printf("%lld",dp[p]%100000000);
    28     return 0;
    29 }
  • 相关阅读:
    Mysql数据查询
    Mysql数据类型
    desc和show
    Mysql权限管理
    深入理解inode和硬链接和软连接和挂载点
    Linux用户和组
    VIM文本编辑器
    Linux文件操作
    MySQL基础
    八大排序
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7726930.html
Copyright © 2011-2022 走看看