以下所有结论通过找规律获得,不会证明。
诈骗题。
发现每次 M M M 和 V V V 增加量是相同的,且是上一次增加量的 2 \sqrt2 2 倍。
以下式子中 q q q 定义为 n − 1 n-1 n−1。
通过等比数列求和公式可以得到 M V = ( 2 ) q + 1 + ( 2 ) q − 2 − 1 ( 2 ) q + 1 + ( 2 ) q − 1 \frac{M}{V}=\frac{(\sqrt{2})^{q+1}+(\sqrt{2})^{q}-\sqrt{2}-1}{(\sqrt{2})^{q+1}+(\sqrt{2})^{q}-1} VM=(2)q+1+(2)q−1(2)q+1+(2)q−2−1
将上面式子写做 x 2 + y z 2 + w \frac{x \sqrt2+y}{z \sqrt2 +w} z2+wx2+y 的形式,其中 x , y , z , w x,y,z,w x,y,z,w 可以直接算出来,对 q q q 分奇偶讨论一下。
分母有理化,再把 2 \sqrt2 2 提出来,可以得到题目最后要求我们输出的就是 y z − x w 2 z 2 − w 2 \frac{yz-xw}{2z^2-w^2} 2z2−w2yz−xw,对分母那个玩意儿求一下逆元输出就可以了。
贴一下代码。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=999999893;
int t,n,x,y,z,w,B;
int KSM(int a,int b){int ans=1;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}
signed main(){cin>>t;while(t--){cin>>n;n--;if(n%2==0) x=(KSM(2,n/2)-1+mod)%mod,y=(KSM(2,n/2)-1+mod)%mod;else x=(KSM(2,(n-1)/2)-1+mod)%mod,y=(KSM(2,(n+1)/2)-1+mod)%mod;z=(x+1)%mod,w=y;B=(y*z%mod-x*w%mod+mod)%mod*KSM((z*z%mod*2%mod-w*w%mod+mod)%mod,mod-2)%mod;cout<<B<<endl;}return 0;
}