题目里面有一句n为偶数,就是这道题的突破口
既然1和-1的平方可以改变符号,那四次方应该也是一样的思路,所以虚数i正好可以,就用一样的方式推出来具体的答案,1/2*(-4)n/4+2n-2。
代码,最后还是要处理一下-4.
#include<cstdio>
using namespace std;
typedef long long ll;
const ll mod=998244353;
ll ppow(ll a, ll b)
{
ll ans=1;
while(b)
{
if(b&1)
{
ans*=a;
ans%=mod;
}
a*=a;
a%=mod;
b>>=1;
}
return ans;
}
int main()
{
ll n, c, d, ans;
scanf("%lld", &n);
ll k = n/4;
c=ppow(4, k-1)%mod;
d=ppow(2, n-2)%mod;
if(k%2==1)ans = (d-c*2%mod+mod)%mod;
else ans = (d+c*2)%mod;
// if(k%2==1)ans = (ppow(2,n-2)-2*ppow(4,k-1)%mod+mod)%mod;
// else ans = ppow(2,n-2)+2*ppow(4,k-1)%mod;
ans %= mod;
printf("%lld", ans);
return 0;
}