/* C++ program to calculate A051753 Author: M. Wang Email Address: atvv@foxmail.com Compiler: MinGW compiler Compiler Version: v4.9.2 (tdm64-1) OEIS URL: https://oeis.org/A051753 Output: 1 4 240 384 30720 7372800 ... */ #include #include #include #include #include #include #include #include using namespace std; #define lenof(a)(sizeof(a)/sizeof(a[0])) #define min(a,b) (((a)<(b))?(a):(b)) #define max(a,b) (((a)>(b))?(a):(b)) #define min_(a,b) {if(a>(b))a=(b);} #define max_(a,b) {if(a<(b))a=(b);} #if defined _MSC_VER || defined __MINGW32__ #define I64 "I64" #else #define __int64 long long #define I64 "ll" #endif map mp; unsigned row[64]; unsigned ub; unsigned n; unsigned __int64 p3[64]; unsigned __int64 factorial(unsigned n){ unsigned i; unsigned __int64 ans=1; for(i=2;i<=n;i++){ ans*=i; } return ans; } int mx; int n2; int n1; int str[64]; int invcnt=1; int detval; void per_dfs(int k){ int i; if(k!=n){ int t=row[k]/p3[str[k]]%3; if(t){ if(t==1)invcnt=-invcnt; per_dfs(k+1); if(t==1)invcnt=-invcnt; } for(i=k+1;i0;row[idx]--){ det(sum1+row[0]/p3[n1]); } return; } for(row[idx]=row[idx+1]-1;row[idx]>0;row[idx]--) { dfs(idx-1,sum1+row[idx]/p3[n1]); } } void init_p3(){ int i; p3[0]=1; for(i=1;isecond/2*(factorial(n))); } return 0; }