wzk很喜欢欧几里得算法。欧几里得算法是一种用来求最大公约数的常用算法,它的一种 C++ 递归实现如下:
int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } }
现在我们已知 gcd(a, b) 这个函数共递归了 nnn 次,求所有满足 a>b≥0a > b \ge 0a>b≥0 的可能的 a, ba,\ ba, b 中 a+ba + ba+b 最小的一组的 aaa 与 bbb 之和。
gcd(a, b)
你需要处理 TTT 组询问,也就是对 TTT 个不同的 nnn 给出 各自 的 a+ba + ba+b 的最小值。
第一行一个正整数 TTT ,表示共有 TTT 组询问。
接下来 TTT 行,每行一个非负整数 nnn 。
输出 TTT 行,每行一个整数,表示 a+ba + ba+b 的最小值。
1 0
1
1 1
3
1≤T≤811 \le T \le 811≤T≤81
0≤n≤800 \le n \le 800≤n≤80
提示:
对于样例1,考虑 gcd(1, 0) ,由于 b=0b = 0b=0 ,不会递归,即是递归 000 次。
gcd(1, 0)
对于样例2,考虑 gcd(2, 1) ,会递归一次至 gcd(1, 0) 。
gcd(2, 1)