#include<iostream> #include<cstdio> #include<cstring> using namespace std; int num[100],t,n; int check(int k) { for(int i=1;i<=k/3;i++) { int flag=1; for(int L=1;L<=i;L++) if(num[k-3*i+L]!=num[k-3*i+L+i]||num[k-3*i+L]!=num[k-3*i+L+i+i]) { flag=0; break; } if(flag) { return 0;} } return 1; } void dfs(int step) { if(step>n) { t++; return ; } for(int i=0;i<=1;i++) { num[step]=i; if(check(step)) dfs(step+1); } } int main() { scanf("%d",&n); num[1]=0; dfs(2); printf("%d\n",t*2); return 0; } /************************************************************** Problem: 1824 User: admin Language: C++ Result: Accepted Time:281 ms Memory:2076 kb ****************************************************************/