正题
题目链接:https://ac.nowcoder.com/acm/contest/1104/A
题目大意
一个010101序列,如果首项是000,那么你就可以变111或者不变。如果是111那么对方可以选择变000或者不变,如果全变成0那么你获胜,如果永远不能全变成0那么对手获胜。
求在双方都采取最有策略的情况下有多少个长度为nnn的序列可以使你获胜。
解题思路
我们考虑一下自己能够做什么,可以将一段连续的1变成0,也就是可以将两段连续的1连接起来。对手可以将一段连续的1变成0,改变后那么就可以变成一段更长的连续的1,那么下次你就可以再次全部变成0。
那么结论就是任何序列你都可以获胜,所以答案就是2n2^n2n,快速幂即可。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=998244353;
ll n;
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
int main()
{scanf("%lld",&n);printf("%lld",power(2,n));
}