题目:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
哎呀,头疼的longlong不会用。WA了一次自家CB我还以为32 输出2是编译器问题呢...
后来才发现中介变量也得开longlong.
总之先算了一下找规律,然后发现只要算一种固定的开头的种数再×3即可
每一轮的R的数量是上一轮的G+B,B=R+G,G=R+B,模拟到n-1轮,又因为首尾不同色,所以SUM=B+G,再×3输出即可
#include<stdio.h>
#include<string.h>
int main()
{
int n;
long long sum=0;
while (scanf("%d",&n)!=EOF)
{
int i;
long long c2=0,c3=0,c1=1,t1,t2,t3;
if (n==1) {printf("3\n");continue;}
for (i=1;i<=n-1;i++) {t1=c1;t2=c2;t3=c3;c1=t2+t3;c2=t1+t3;c3=t1+t2;}
sum=3*(c2+c3);
printf("%lld\n",sum);
}
}