(原创题)非回文串 (数学)

来源:互联网 发布:软件本地数据库查找 编辑:程序博客网 时间:2024/06/06 04:02

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;} 
原创粉丝点击