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

xiaoxiao2021-02-28  110

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; }
转载请注明原文地址: https://www.6miu.com/read-33142.html

最新回复(0)