#include<stdio.h> int main() { __int64 a[51]; int i,n; a[1]=3; a[2]=6; a[3]=6; for(i=4;i<=50;i++) a[i]=a[i-1]+2*a[i-2]; while(scanf("%d",&n)!=EOF) { printf("%I64d/n",a[n]); } return 0; } a[i]=分两种, 1 前i-1首尾不同 个数刚好a[i-1] 2 前i-1首尾相同 显然第一个与第i-2个颜色就不能相同了,个数刚好a[i-2] 但是此时最后一个可以取两种颜色,所以要乘2。