原文:
给定一个始终为偶数的整数 n ,我们的任务是按照给定的条件打印 n 个不同的数字:
- 前半部分数字是偶数,而另一半数字是奇数
- 前半数的元素和后半数的元素和应该相等
如果上述条件满足,则打印数组,否则输出“-1”。 例:
输入: n = 4 输出: 2 4 1 5 说明: 给定数字 4 我们需要打印 4 个数字。前半部分= 2,4,它们的和是 6,另一半= 1,5,它们的和也是 6。 输入: n = 22 输出: -1 说明: 无法打印所需数组。
方法: 要解决上面提到的问题,我们必须观察到整数 n 必须是 4 的倍数。
- 我们知道前 n/2 个偶数的和将是偶数,所以如果其他 n/2 个整数的和也是偶数,那么 n/2 一定是偶数,因为奇数个奇数的和总是奇数。
- 如果 n/2 是偶数,那么 n 是 4 的倍数,所以如果 n 不能被 4 整除,那么答案是“-1”,否则,会有一个可能的数组。
- 为了打印数组,我们将考虑两个部分,即第一个部分是 n/2 个元素,是 2 的倍数,另一半是 2–1 的倍数。对于数组中的最后一个元素,我们将通过应用直接公式 n n/2–1 来计算整数,因为我们应该使两半的和相等。
以下是上述方法的实现:
c
// c implementation to print n distinct numbers
#include
using namespace std;
// function to print the required array
bool printarr(int n)
{
// check if number is a multiple of 4
if (n % 4 == 0) {
// printing left half of the array
for (int i = 1; i <= n / 2; i )
cout << i * 2 << ' ';
// printing right half of the array
for (int i = 1; i < n / 2; i )
cout << i * 2 - 1 << ' ';
cout << n n / 2 - 1 << '\n';
}
else
cout << "-1";
}
// driver code
int main()
{
int n = 22;
printarr(n);
return 0;
}
java 语言(一种计算机语言,尤用于创建网站)
// java implementation to print n distinct numbers
import java.util.*;
class gfg{
// function to print the required array
static void printarr(int n)
{
// check if number is a multiple of 4
if(n % 4 == 0)
{
// printing left half of the array
for(int i = 1; i <= n / 2; i )
system.out.print(i * 2 " ");
// printing right half of the array
for(int i = 1; i < n / 2; i )
system.out.print(i * 2 - 1 " ");
system.out.println(n n / 2 - 1);
}
else
system.out.print("-1");
}
// driver code
public static void main(string[] args)
{
int n = 22;
printarr(n);
}
}
// this code is contributed by amal kumar choubey
python 3
# python3 implementation to print
# n distinct numbers
# function to print the required array
def printarr(n):
# check if number is a multiple of 4
if (n % 4 == 0):
# printing left half of the array
for i in range(1, (n / 2) 1):
print (i * 2, end = " ")
# printing right half of the array
for i in range(1, n / 2):
print (i * 2 - 1, end = " ")
print (n n / 2 - 1, end = "\n")
else:
print ("-1")
# driver code
n = 22
printarr(n)
# this code is contributed by pratikbasu
c
// c# implementation to print n distinct numbers
using system;
public class gfg{
// function to print the required array
static void printarr(int n)
{
// check if number is a multiple of 4
if(n % 4 == 0)
{
// printing left half of the array
for(int i = 1; i <= n / 2; i )
console.write(i * 2 " ");
// printing right half of the array
for(int i = 1; i < n / 2; i )
console.write(i * 2 - 1 " ");
console.writeline(n n / 2 - 1);
}
else
console.write("-1");
}
// driver code
public static void main(string[] args)
{
int n = 22;
printarr(n);
}
}
// this code is contributed by 29ajaykumar
java 描述语言
output:
-1
时间复杂度: o(n)
辅助空间: o(1)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处