最后还是看题解了
用的第三种方法
阶乘进位制?
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
long long n,m,fact;
int main()
{
cin >>n >>m;
fact=1;
for(int i=1;i<=n;i++) fact*=i;
for(int i=1;m!=0;i++)
{
fact/=i;
if(fact<=m)
{
printf("%lld\n",m/fact*fact);
m%=fact;
}
}
if(m!=0) cout<<">w<";
return 0;
}