题目链接
题目翻译:
一个长度为n的permutation是一个由整数1~n以随意顺序组合的数组。比如[2,3,1,5,4]就是一个permutation,但是[1,2,2]就不是permutation(2出现了两次),[1,3,4]也不是permutation(n=3但是4在数组中)。
p是一个长度为n的permutation,我们定义fingerprint F(p) 为数组p任意两个相邻的元素的和组成的有序数组, 即F(p)=sort([p1+p2, p2+p3, … , pn-1+pn])。
比如,如果n=4,p=[1,4,2,3],则F(p)= sort([1+4,4+2,2+3]) = sort([5,6,5]) = [5,5,6]。
给你一个长度为n的permutation p,你的任务是找到一个不同的permutation p’,使得**F(p)与F(p’)**相等。如果pi!=p’i则表示p与p’是两个不同的permutation。
解题思路:
刷题太少的我被摆了一道,居然花了我17分钟,最后才发现,直接倒序输出就行了。
代码:
#include<iostream>
using namespace std;
int main(){
// freopen("1.txt","r",stdin);
int t,n,a[110];
cin>>t;
while(t--){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=n-1;i>=0;i--){
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
总结:
多思考,像这题确实简单,但是一开始实在想不出来,但是看了其分数,发现500都不到,就往简单了想。