题面

这个题好像是可以矩阵快速幂的。但是同学写了个究极玄学的做法,不知道为什么是对的。
#include <bits/stdc++.h>
using namespace std;
const long long Mod=998244353,ny=598946612;
int n;
long long s,t,ans;
long long pow(int p)
{
if(p==0) return 1;
if(p==1) return 2;
long long ret=pow(p>>1);
if(p&1==1) return ret*ret%Mod*2;
return ret*ret%Mod;
}
int main()
{
cin>>n;
s=pow(n/5);
t=pow(n);
if(n%5==0) ans=4*s+t;
else if(n%5==1) ans=3*s+t;
else if(n%5==2) ans=s+t;
else if(n%5==3) ans=2*s+t;
else ans=4*s+t;
ans=ans*ny%Mod;
cout<<ans;
return 0;
}
(pow为2^n, ny是5在模998244353下的逆元)
有没有大佬解释一下他是怎么写的