原文:
给定 n 和 k,任务是打印 n 行,其中每行包含 4 个数字,使得这 4 个数字中的每一个都有一个 k,并且 n4 中使用的最大数字应该最小化。 注:如有多输出,打印任意一个。 示例:*
输入: n = 1,k = 1 输出:1 2 3 5 1、2、3 和 5 中的每一对给出一个 gcd k,其中最大的数字是 5,这是最小的可能。
输入 : 2 2 输出 : 2 4 6 2 2 14 18 10 16 在上面的输入中,最大的数字是 22,这是制作 2 行 4 个数字的最小可能。
方法:第一个观察是,如果我们能解出 k=1 的给定问题,那么我们可以通过简单地将答案与 k 相乘来解决带有 gcd k 的问题,我们知道任何三个连续的奇数在配对时总是有一个 gcd 1,所以每一行的三个数字都可以很容易地得到。因此,这些行看起来像:
1 3 5 _
7 9 11 _
13 15 17 _
.
.
.
偶数不能总是插入,因为在第三行插入 6 会使 gcd(6,9)为 3。因此,可以插入的最佳数字是每行前两个 off 数字之间的数字。因此,模式如下所示:
1 2 3 5
7 8 9 11
13 14 15 17
.
.
.
为了获得给定的 gcd k,人们可以很容易地将 k 乘以所获得的数字。因此对于第一行:
- 第一个数字将是 k * (6*i 1)
- 第二个数字将是 k * (6*i 1)
- 第三个数字将是 k * (6*i 3)
- 第四个数字将是 k * (6*i 5)
n4 个数字中最大的数字将是k (6 * i–1) 以下是上述方法的实现。
c
// c implementation of the
// above approach
#include
using namespace std;
// function to print n lines
void printlines(int n, int k)
{
// iterate n times to print n lines
for (int i = 0; i < n; i ) {
cout << k * (6 * i 1) << " "
<< k * (6 * i 2) << " "
<< k * (6 * i 3) << " "
<< k * (6 * i 5) << endl;
}
}
// driver code
int main()
{
int n = 2, k = 2;
printlines(n, k);
return 0;
}
java 语言(一种计算机语言,尤用于创建网站)
// java implementation of the
// above approach
import java.util.*;
import java.lang.*;
import java.io.*;
class gfg
{
// function to print n lines
static void printlines(int n, int k)
{
// iterate n times to print n lines
for (int i = 0; i < n; i ) {
system.out.println ( k * (6 * i 1) " "
k * (6 * i 2) " "
k * (6 * i 3) " "
k * (6 * i 5) );
}
}
// driver code
public static void main(string args[])
{
int n = 2, k = 2;
printlines(n, k);
}
}
python 3
# python implementation of the
# above approach.
# function to print n lines
def printlines(n, k) :
# iterate n times to print n lines
for i in range(n) :
print( k * (6 * i 1),
k * (6 * i 2),
k * (6 * i 3),
k * (6 * i 5))
# driver code
if __name__ == "__main__" :
n, k = 2, 2
printlines(n, k)
# this code is contributed by ankitrai1
服务器端编程语言(professional hypertext preprocessor 的缩写)
c
// c# implementation of the
// above approach
using system;
class gfg
{
// function to print n lines
static void printlines(int n, int k)
{
// iterate n times to print n lines
for (int i = 0; i < n; i )
{
console.writeline ( k * (6 * i 1) " "
k * (6 * i 2) " "
k * (6 * i 3) " "
k * (6 * i 5) );
}
}
// driver code
public static void main()
{
int n = 2, k = 2;
printlines(n, k);
}
}
// this code is contributed
// by akanksha rai(abby_akku)
java 描述语言
output:
2 4 6 10
14 16 18 22
时间复杂度:o(4 * n) t3】辅助空间: o(1)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处