首页 > 代码库 > 算法提高 排列数

算法提高 排列数

  算法提高 排列数  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  0、1、2三个数字的全排列有六种,按照字母序排列如下:
  012、021、102、120、201、210
  输入一个数n
  求0~9十个数的全排列中的第n个(第1个为0123456789)。
输入格式
  一行,包含一个整数n
输出格式
  一行,包含一组10个数字的全排列
样例输入
1
样例输出
0123456789
数据规模和约定
  0 < n <= 10!
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#define for(i,x,n) for(int i=x;i<n;i++)
#define ll long long int
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define MAX_N 50005

using namespace std;

int main()
{
    //freopen("data.txt", "r", stdin);
    //freopen("data.out", "w", stdout);
    int a[30];
    int n;
    scanf("%d",&n);
    for(i,0,10){
        a[i]=i;
    }
    for(i,1,n){
        next_permutation(a,a+10);
    }
    for(i,0,10){
        printf("%d",a[i]);
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 

算法提高 排列数