El aprendizaje es como remar río arriba
acuerdo de acceso UPC- (Inverse Cantor ampliable)
Cantor Expand ← señalo mi punto
Tome 1 a N fueron N números consecutivos (1≤N≤9), que consta de todos los posibles N bits no se superponen cada número, en orden ascendente numerada. Cuando una entrada número M, N el número de bits que se pueden imprimir a cabo hasta el número correspondiente. Por ejemplo, cuando N = 3, puede estar compuesto de los tres dígitos: Así que, cuando el número de entrada M = 2, la salida 132.
entrada
Se compone de dos números, es decir, un número entero positivo N (1 ≤ N ≤ 9) y el positivo número entero M (1 ≤ M ≤ 362.880).
exportación
Sólo una línea, es decir, el número N y M bits correspondientes a la entrada.
Ejemplo de entrada
3 2
Ejemplo de salida
132
Esta cuestión de cuándo tomar la carretera, de repente pensó en dos meses de repente vio un algoritmo llamado el
algoritmo de Cantor Cantor.matriz completa Cantor algoritmo, lo que significa que una secuencia hizo el siguiente orden descendente, entonces el algoritmo obtenido por Cantor Esta es la primera de variasPor ejemplo, la secuencia original es entonces 123 123 para el primer término a la segunda 132, y así sucesivamente. . .
A continuación, se encuentra este lugar y el significado de las preguntas son exactamente lo contrario, bien entonces nos basamos en el algoritmo Cantor operación inversa. En primer lugar, hacer alguna operación positiva.
Cantor Expand
expansión Cantor sigue
Descrito como un montón de palabras
En primer lugar, añadir 1, N ° 1, ya que la secuencia desde el principio.
Se define un número de columnas como 12345, un trastorno dado.
53412, cómo esta es la primera de varias.
Definimos N como el estado actual de todos los números digitales, es todavía detrás del número es menor que el número de su cuenta, como la espalda, entonces no hay un número 1, por lo que es 0.Tenga en cuenta que una vez eliminado
5 4 detrás de él de modo N . 1 =. 4, por lo que hay 1234 prosecuencia.
1 y 3, y hay N 2 y tiene dos 2 = 2, de modo que queda 124. Tal N . 3 = 2, N . 4 = 0, N . 5 = 0.
Así que después de usar la expansión
ans disponibles es 113
entonces
inversa Cantor Ampliar¿Cómo se juegaSe?
Para jugar contra el canto.
Además de la factorial es ser fresco que se pierde
debido a que es la primera, más 1 por lo que el inverso del tiempo de menos afirmativa 1 primero
entonces
113-1 = 112.
Aceptar empezar por una causa sueño.
También puso cinco series
secuencia12345
Primero con 112 ÷ 4! = 4 ... 16
es pequeña de lo que son en todo ese número es 4, entonces el número de 4 + 1
es el número 5 es la quinta
secuencia en1234
Y luego con 16 ÷ 3! = 2 ... 4
de manera que toda la secuencia de interior más pequeño que tienen dos, así que este número es el número de 2 + 1
es el tercer número es 3
secuencia se convierte124
Y luego con 4 ÷ 2! = 2 ... 0
para que toda la secuencia en la que hay más pequeños que sus dos entonces el segundo número es el número de + 1
es el tercer número es 4
secuencia se convierte12
Y luego con un 0 ÷ 1! = 0 0 ...
para que toda la secuencia en la que hay menos de su número es 0, entonces el número 0 + 1
es el número 1 es la primera
secuencia se convierte2
Por lo que finalmente se convierte en 53412
Así que existe este problema dentro del gusto! ! !
Tiempo para AC
#include<iostream>
#include<algorithm>
#include<string.h>
#include<map>
#include <stack>
#include<string>
#include<math.h>
#include<stdio.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
const ll ll_inf=9223372036854775807;
const int int_inf=2147483647;
const short short_inf=32767;
const char char_inf=127;
inline ll read() {
ll c=getchar(),Nig=1,x=0;
while(!isdigit(c)&&c!='-')c=getchar();
if(c=='-')Nig=-1,c=getchar();
while(isdigit(c))x=((x<<1)+(x<<3))+(c^'0'),c=getchar();
return Nig*x;
}
#define read read()
ll j[]= {0,1,2,6,24,120,720,5040,40320,362880,3628800};
ll save[]= {1,2,3,4,5,6,7,8,9};
int main() {
ll n,m;
cin>>n>>m;
ll t=m-1;
for(ll i=n-1; i>=1; i--) {
ll temp=t/j[i]+1;
for(ll j=0; j<n; j++) {
if(save[j]==-1)continue;
temp--;
if(!temp) {
printf("%lld",save[j]);
save[j]=-1;
break;
}
}
t%=j[i];
}
for(int i=0; i<n; i++)
if(save[i]!=-1) printf("%lld",save[i]);
return 0;
}
Frente almacenar el siguiente contenido factorial por lo que sería más conveniente.
fórmula Hou Kangtuo para comprender mejor la relación de dfs consumo
Subproducto de la rueda mes
Hay una planta de ruta para las pistas, sin límites de aprendizaje amarga para el barco.