列表

详情


NC24434. Buy Fruits

描述

在blueland上有个水果店,它们的编号依次为。奇妙的是,每个水果店都只卖一种水果,且这些水果店卖的水果种类都各不相同。
在每个水果店有一个传送门,且这些传送门也有各自的编号,其中号水果店的传送门编号为,每个传送门的编号也各不相同,且是中的一个整数。简单的说,的一个排列
lililalala初始位于号水果店,现在他想买到全部的种水果,但是他并不认识路,所以只能通过传送门往来于水果店并通过固定的流程买水果:
当他到达号水果店时,如果之前没有到过这个水果店,那么lililalala会买下这种水果并且通过这个水果店的传送门传送到号水果店;
如果之前已经到过这个水果店,那么他就立即停止买水果的流程。
请输出一种使得lililalala可以买到全部种水果的一种传送门编号序列,或者判定不存在这样的序列。

输入描述

仅一行一个整数

输出描述

如果存在符合题目要求的序列:
输出一行个整数--符合题目要求的序列,如果有多个序列满足要求,输出任意一个即可。
输出需要保证:
如果不存在符合题目要求的序列,输出

示例1

输入:

8

输出:

6 3 7 2 0 5 1 4

说明:

lililalala经过水果店的顺序是:
\ 0 \rightarrow 6 \rightarrow 7 \rightarrow 3 \rightarrow 5 \rightarrow 2 \rightarrow 1 \rightarrow 4
答案可能不止一种。

示例2

输入:

10

输出:

8 4 9 1 3 0 6 2 5 7

说明:

lililalala经过水果店的顺序是:
\ 0 \rightarrow 8 \rightarrow 3 \rightarrow 4 \rightarrow 7 \rightarrow 9 \rightarrow 6 \rightarrow 2 \rightarrow 1 \rightarrow 5
答案可能不止一种。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 14ms, 内存消耗: 884K, 提交时间: 2019-05-03 20:01:23

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	if(n==1)puts("0");
	else if(n&1)puts("-1");
	else{
		printf("1");
		for(int i=n-2;i>=0;i-=2)printf(" %d",i);
		for(int i=n-1;i>1;i-=2)printf(" %d",i);
		printf("\n");
	}
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 13ms, 内存消耗: 860K, 提交时间: 2019-06-23 16:35:37

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
    if(n==1)printf("0");
	else if(n%2==1)printf("-1");
	else{
		for(int i=n-1;i>=0;i-=2)printf("%d ",i);
		printf("0 ");
		for(int i=n-2;i>0;i-=2)printf("%d ",i);
	}
}

Python3(3.5.2) 解法, 执行用时: 206ms, 内存消耗: 4928K, 提交时间: 2019-05-14 23:20:45

n=int(input())
if n==1:
	print(0)
	exit()
if n&1:
	print(-1)
	exit()
for i in range(n-1,0,-2):
	print(i,end=" ")
print(0,end=" ")
for i in range(n-2,0,-2):
	print(i,end=" ")

上一题