2020牛客寒假算法基础集训营4.A——欧几里得规律

Posted Nirvana柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020牛客寒假算法基础集训营4.A——欧几里得规律相关的知识,希望对你有一定的参考价值。


​题目传送门​


题目描述

欧几里得算法是一种求最大公约数的有效算法,在算法竞赛中很常用。
这个算法的 Python 实现如下:

def gcd(a,b):
if b == 0:
return a
return gcd(b,a%b)

现在,如果已知 gcd(a,b) 共递归了 n次,求所有可能的a,b中满足a>b>=0且a+b最小的一组的a与b之和。


输入描述:

第一行一个整数,T。
接下来T行一行一个整数,n。


输出描述:

T行,每行一个整数,代表a+b。


输入

1
0


输出

1


说明

gcd(1,0) 由于 b=0,不会递归,即是递归0次。


输入

1
1


输出

3


说明

gcd(2,1)会递归一次至gcd(1,0)。


备注:

2020牛客寒假算法基础集训营4.A——欧几里得【规律】_递归
2020牛客寒假算法基础集训营4.A——欧几里得【规律】_ios_02


题解

  • 很容易发现规律
  • 2020牛客寒假算法基础集训营4.A——欧几里得【规律】_算法竞赛_03


AC-Code

#include <bits/stdc++.h>
using namespace std;
#define
typedef long long ll;

const int INF = 0x7fffffff;
const int maxn = 1e5 + 7;


int main()
int T; cin >> T; while (T--)
int n; cin >> n;
ll a = 1, b = 0;
for (int i = 0; i <= n; ++i)
ll temp = b;
b = a;
a = temp + b;

if (n == 0) a = 1, b = 0;
cout << a + b << endl;


以上是关于2020牛客寒假算法基础集训营4.A——欧几里得规律的主要内容,如果未能解决你的问题,请参考以下文章

2020牛客寒假算法基础集训营4.C——子段乘积线段树

2020牛客寒假算法基础集训营4.G——音乐鉴赏概率

2020牛客寒假算法基础集训营4.I——匹配星星multiset & 贪心 & 二分

2020牛客寒假算法基础集训营2——C.算概率DP

2020牛客寒假算法基础集训营5.A——模板简单计算

2020牛客寒假算法基础集训营2——H.施魔法DP