当前位置: 首页 > news >正文

P1306 斐波那契公约数(ksm+结论)

题目描述

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

Update:加入了一组数据。

输入输出格式

输入格式:

 

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

注意:数据很大

 

输出格式:

 

Fn和Fm的最大公约数。

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

 

输入输出样例

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

结论:gcd(F[n],F[m])=F[gcd(n,m)]
就是一个ksm了
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<cmath>
#include<map>
#define mod 100000000
const int maxn=1e5+5;
typedef long long ll;
using namespace std;
struct mat
{
    ll a[5][5]; 
};
mat mul(mat x,mat y)
{
    mat ans;
    memset(ans.a,0,sizeof(ans.a));
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<2;j++)
        {
            for(int k=0;k<2;k++)
            {
                ans.a[i][j]=(ans.a[i][j]+x.a[i][k]*y.a[k][j])%mod;
            }
        }
    }
    return ans;
}
mat ans;
ll ksm(int x)
{
    mat res;
    res.a[0][0]=1;
    res.a[0][1]=1;
    res.a[1][0]=1;
    res.a[1][1]=0;
    while(x)
    {
        if(x&1)
        {
            ans=mul(ans,res);
        
        }
        x>>=1;
        res=mul(res,res);
    }
    return ans.a[0][0]%mod;
}
int main()
{
    int n,m;
    cin>>n>>m;
    int x=__gcd(n,m);
    memset(ans.a,0,sizeof(ans.a));
    ans.a[0][0]=1;
    ans.a[1][0]=1;
    ll answer=ksm(x-1);
    printf("%lld\n",answer);
    return 0;
} 

 

转载于:https://www.cnblogs.com/Staceyacm/p/11219583.html

相关文章:

  • [Dxperience.8.*]报表预览控件PrintControl设置
  • “”(十六进制值 0x1D)是无效的字符
  • 每个开发人员现在应该下载的十种必备工具
  • 【海量视频】2013年上半年BPM厂商'K2'市场活动资料集锦
  • 2019牛客暑期多校训练营(第二场) - J - Go on Strike! - 前缀和预处理
  • OS的发展和分类
  • VBScript 内置函数
  • P1020 导弹拦截(nlogn求最长不下降子序列)
  • P1090 合并果子(哈弗曼树)
  • 推荐阅读链接
  • MySQL 5.7 zip 安装
  • P1004 方格取数(四维动态规划)
  • SCRUM Day 8
  • 2.3_Database Interface ODBC组成原理
  • 石子合并(区间dp典型例题)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Java方法详解
  • Python语法速览与机器学习开发环境搭建
  • RxJS: 简单入门
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vue-router的history模式发布配置
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 机器学习学习笔记一
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 嵌入式文件系统
  • 驱动程序原理
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • MyCAT水平分库
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ![CDATA[ ]] 是什么东东
  • (TOJ2804)Even? Odd?
  • (二)丶RabbitMQ的六大核心
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)80c52学习之旅-起始篇
  • (转)Linq学习笔记
  • (转载)虚函数剖析
  • .net 后台导出excel ,word
  • .Net6使用WebSocket与前端进行通信
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .Net下的签名与混淆
  • .net下简单快捷的数值高低位切换
  • /dev/sda2 is mounted; will not make a filesystem here!
  • :=