/* C++ program to calculate A306928 Author: M. Wang Email Address: atvv@foxmail.com Compiler: MinGW compiler Compiler Version: v4.9.2 (tdm64-1) OEIS URL: https://oeis.org/A306928 Output: 1 3 9 25 67 233 893 ... */ #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 set mp; unsigned row[64]; unsigned ub; unsigned n; unsigned __int64 p3[64]; 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*=2; per_dfs(k+1); if(t!=1)invcnt/=2; } for(i=k+1;i0;row[idx]--){ det(); } return; } for(row[idx]=row[idx+1]-1;row[idx]>0;row[idx]--){ dfs(idx-1); } } void init_p3(){ int i; p3[0]=1; for(i=1;i