求调,悬赏一关注
查看原帖
求调,悬赏一关注
748131
IcyL楼主2023/4/26 18:22
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 2e6 + 10, mod = 998244353;

int dep[N];

int qmi(int b)
{
	int res = 1, a = 2;
	while(b)
	{
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res % mod;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int n, d;
	
	cin >> n >> d;
	
//	for(int i = 0; i < n; i ++) cout << qmi(2, i) << "hooch\n"; 
	
	int res = 0;
	
	for(int i = 0; i <= d; i ++)
	{
//		cout << i << ": " << d - i << " ";
		if(d - i > i) {/*cout << "\n";*/ continue;}
		if(i == d - i) dep[i] = (dep[i - 1] + qmi(i) * qmi(d - i) % mod / 2 % mod) % mod;
		else if(i == 0 || d - i == 0) dep[i] = (dep[i - 1] + qmi(i)  * qmi(d - i) % mod * 2 % mod) % mod;
		else dep[i] = (dep[i - 1] + qmi(i) * qmi(d - i) % mod) % mod;
//		cout << dep[i] << "\n";
	}
	
	for(int i = 0; i < n; i ++) res = (res + dep[min(d, n - i - 1)] * qmi(i) % mod) % mod;
	
	cout << res % mod << "\n";
	
	return 0;
}
2023/4/26 18:22
加载中...