The Little Elephant enjoys recursive functions.
This time he enjoys the sorting function. Let a is a permutation of an integers from 1 to n, inclusive, and ai denotes the i-th element of the permutation. The Little Elephant's recursive function f(x), that sorts the first x permutation's elements, works as follows:
- If x = 1, exit the function.
- Otherwise, call f(x - 1), and then make swap(ax - 1, ax) (swap the x-th and (x - 1)-th elements of a).
The Little Elephant's teacher believes that this function does not work correctly. But that-be do not get an F, the Little Elephant wants to show the performance of its function. Help him, find a permutation of numbers from 1 to n, such that after performing the Little Elephant's function (that is call f(n)), the permutation will be sorted in ascending order.
A single line contains integer n (1 ≤ n ≤ 1000) — the size of permutation.
In a single line print n distinct integers from 1 to n — the required permutation. Numbers in a line should be separated by spaces.
It is guaranteed that the answer exists.
1
1
2
2 1
模拟一下即可。假设满足题意的数列为a1, a2, a3, a4,...,an,由an到a1依次执行递归函数后,得到的数列为: a2, a3, ...,an,a1.也就是说只是把原数列的头元素掉到最后面。递归函数要得到一个递增序列,就是1,2,3,...,n,那么原数列就自然是n,1,2,...,n-1,这样把头元素调到最后面就是所要求的序列。
AC CODE
1 #include <iostream> 2 #include <string> 3 #include <cstdio> 4 #include <cmath> 5 #include <cstring> 6 #include <algorithm> 7 #include <vector> 8 #define LL long long 9 #define MAXI 2147483647 10 #define MAXL 9223372036854775807 11 #define eps (1e-8) 12 #define dg(i) cout << "*" << i << endl; 13 using namespace std; 14 15 int main() 16 { 17 int n; 18 while(scanf("%d", &n) != EOF) 19 { 20 printf("%d ", n); 21 for(int i = 1; i < n - 1; i++) 22 printf("%d ", i); 23 if(n != 1) printf("%d\n", n - 1); 24 } 25 return 0; 26 }