目录
题目描述:
解题思路:
解题代码:
题目描述:
解题思路:
注:其中对于取模过程中用到了费马小定理,可参考如下博客:
(3条消息) 费马小定理及其应用_CTGU-Yoghurt的博客-CSDN博客
推算如下:
解题代码:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int, int> pii;
typedef pair<db, db> pdd;
const int N=1e5+6;
const int M=998244353;
ll n,m;
ll qsm(ll x,ll p){
ll res=1;
while(p){
if(p&1) res=res*x%M;
x=x*x%M;
p>>=1;
}
return res%M;
}
ll inv(ll x){
return qsm(x,M-2);
}
int main(){
cin>>n>>m;
ll ans=1;
for(ll i=n+1;i<=n+m;){
ll lc=(ll)log2(i);
ll gl=(1-inv(qsm(2,lc))+M)%M;//求一段区间内成功的概率
ll r=min(n+m,(1ll<<(lc+1))-1);//区间的最右边 通过l找到右边的r
ans=ans*qsm(gl,r-i+1)%M;//取一段区间
i=r+1;//i指向下一段区间
}
cout<<ans;
return 0;
}