题目描述

一个有趣的函数F(a,b),表示对于数对(a,b)调用辗转相除法的步数为多少

例如 (24,40)....0 (16,24).....1 (8,16).....2 (0,8)....3,即f(24,40)=3

现在已知f(a,b)=k,求(a,b)使得a+b尽量小,同时,由于最终的(a,b)可能比较大,所以你只要在模10^9+7同余系下输出结果即可

输入输出格式

输入格式:

一个数k

输出格式:

两个数a,b

输入输出样例

输入样例#1:

1000000007
输出样例#1:

0 1000000006

说明

对于100% 数据 k < 10^15

这个题很有意思,值得一想

我们需要考虑gcd的过程 

最差情况是 -> 每次操作都是商1 -> 相当于两个数做差 

这个时候就是次数最多,也就是我们要找的最小的a,b的情况

由反复做差 -> 可以联想到斐波那契数列

经过简单的举例, 

这个题就是求斐波那契数列的第 k和k+1 项

(上面不太懂的话自己举个例推算一下就很好理解了)

由于数据范围很大,所以需要拿矩阵快速幂来算

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#define MAXN 110
#define mod 1000000007
using namespace std;
long long N,M;
struct Matrix{
long long mat[MAXN][MAXN]; Matrix operator *(const Matrix& a)
{
Matrix c;
memset(c.mat,,sizeof c.mat);
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
for(int k=;k<=N;k++)
c.mat[i][j]=(c.mat[i][j]+mat[i][k]*a.mat[k][j])%mod;
return c;
}; Matrix operator ^(long long k)
{
Matrix c=*this,t=*this;
k--;
for(;k;k>>=,t=t*t)
if(k&)c=c*t;
return c;
}; void print()
{
for(int i=;i<=N;i++)
{
for(int j=;j<=N;j++)printf("%d ",mat[i][j]);
printf("\n");
}
};
void scan()
{
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
scanf("%lld",&mat[i][j]);
};
}; int main()
{
scanf("%lld",&M);M++;
if(M==){printf("1 1\n");return ;}
if(M>)M-=;
else {printf("");return ;}
Matrix x;
N=,x.mat[][]=,x.mat[][]=,x.mat[][]=,x.mat[][]=;
Matrix p=x^M;
printf("%lld ",p.mat[][]);
p=x*p;
printf("%lld\n",p.mat[][]);
return ;
}

gcd步数的更多相关文章

  1. POJ 1753 Flip Game (高斯消元 枚举自由变元求最小步数)

    题目链接 题意:4*4的黑白棋,求把棋全变白或者全变黑的最小步数. 分析:以前用状态压缩做过. 和上题差不多,唯一的不同是这个终态是黑棋或者白棋, 但是只需要把给的初态做不同的两次处理就行了. 感觉现 ...

  2. POJ 1681 Painter's Problem (高斯消元 枚举自由变元求最小的步数)

    题目链接 题意: 一个n*n 的木板 ,每个格子 都 可以 染成 白色和黄色,( 一旦我们对也个格子染色 ,他的上下左右 都将改变颜色): 给定一个初始状态 , 求将 所有的 格子 染成黄色 最少需要 ...

  3. poj 1061 青蛙的约会(扩展gcd)

    题目链接 题意:两只青蛙从数轴正方向跑,给出各自所在位置, 和数轴长度,和各自一次跳跃的步数,问最少多少步能相遇. 分析:(x+m*t) - (y+n*t) = p * L;(t是跳的次数,L是a青蛙 ...

  4. gcd?人生赢家!

    题目背景 原创:b2019dy gcd是一个热爱游戏的人 题目描述 gcd最近在玩一个有趣的游戏 我们把这个游戏抽象成一张图,图上有n个点,我们需要寻找总计m件宝物,它们分布在图上,对于每件宝物而言, ...

  5. ZOJ 3593 One Person Game(拓展欧几里得求最小步数)

    One Person Game Time Limit: 2 Seconds      Memory Limit: 65536 KB There is an interesting and simple ...

  6. POJ 3126 Prime Path【从一个素数变为另一个素数的最少步数/BFS】

    Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26475 Accepted: 14555 Descript ...

  7. #410div2C. Mike and gcd problem

    C. Mike and gcd problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  8. HDU5514——容斥原理&&gcd

    题目 链接 有n只青蛙,有m块石头,编号为0-m-1,第i只青蛙每次可以跳$a_i$, 刚开始都在0,问,青蛙总共可以跳到的石头之和为多少.其中$t≤20$,$1≤n≤10^4$,$1≤m≤10^9$ ...

  9. 2017-2018 ACM-ICPC Latin American Regional Programming Contest J - Jumping frog 题解(gcd)

    题目链接 题目大意 一只青蛙在长度为N的字符串上跳跃,"R"可以跳上去,"P"不可以跳上去. 字符串是环形的,N-1和0相连. 青蛙的跳跃距离K的取值范围是[1 ...

随机推荐

  1. lucene简单使用demo

    测试结构目录: 1.索引库.分词器 Configuration.java package com.test.www.web.lucene; import java.io.File; import or ...

  2. Eclipse schema xml提示

    步骤一:确定xsd文件位置 spring-framework-3.2.0.RELEASE\schema\beans  步骤二:复制路径  步骤三:搜索“xml catalog”  步骤四:添加约束提示 ...

  3. 函数签名与消息转发:NSInvocation与NSMethodSignature

    具体可见 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Article ...

  4. 洛谷P3567 [POI2014]KUR-Couriers 主席树

    挺裸的,没啥可讲的. 不带修改的主席树裸题 Code: #include<cstdio> #include<algorithm> using namespace std; co ...

  5. SASS 使用(vs code)

    二.在vs code中编译sass 1.在拓展商店里搜索“easy sass”,并安装,安装成功后点重新加载. 2.接下来进行配置: 在 vs code 菜单栏依次点击“文件 首选项 设置”,打开 s ...

  6. nginx upstream

    nginx转发http和tcp http转发 upstream goforit_201 { server 172.168.10.10:201; } server { listen 201; serve ...

  7. 【codeforces 95C】Volleyball

    [题目链接]:http://codeforces.com/problemset/problem/95/C [题意] 给你n个点,m条边; 每个点有一辆出租车; 可以到达离这个点距离不超过u的点,且在这 ...

  8. httpd: Could not reliably determine the server&#39;s fully qualified domain name

    [root@luozhonghua sbin]# service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed f ...

  9. Node.js能够做什么?

    正如 JavaScript 为client而生.Node.js 为网络而生.Node.js 能做的远不止开发一个网 站那么简单,使用 Node.js,你能够轻松地开发:  具有复杂逻辑的站点:  ...

  10. Cannot find the class file for javax.servlet.ServletContext.

    当eclipse中新导入的Java Project的时候.往往会碰到各种各样的问题,以下是个典型的问题: Cannot find the class file for javax.servlet.Se ...