Problem Description
输入一个长度为n的串,串中只由‘a’、‘b’、‘c’三个小写字母组成。如果不允许出现只含有‘a’和‘b’的回文串,共有多少种组合? 例如:当n为3的时候,共有3^3=27种,但是aba、bab是不允许的,因此只有25种。
Input 第一行输入一个正整数T(1<=T<=1000),表示数据组数; 第二行输入一个正整数n(1<=n<=35),表示串长;
Output 对于每一组数据,输出满足条件的组合数。
Sample Input 3 2 3 4
Sample Output 9 25 79
需要花费一定时间找规律,首先是奇偶,然后需要从二进制的思路上去考虑。不过考虑清楚了,代码实现很简单啊。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
int m=(n+
1)/
2;
long long a=
1,b=
1;
while(n--)
a*=
3;
while(m--)
b*=
2;
long long sum=a-b+
2;
cout<<sum<<endl;
}
return 0;
}