亲爱的爆零
查看原帖
亲爱的爆零
575803
wangzicheng2009楼主2022/7/12 08:50
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int MAXN = 2e6 + 10, mmm = 998244353 ;
ll n, dgf[MAXN], inv[MAXN] ;
ll ftyguh (ll x, ll p = mmm - 2) {
	ll ret = 1 ;
	for (; p ; p >>= 1, x = x * x % mmm)
		if (p & 1)
			ret = ret * x % mmm ;
	return ret ;
}
ll c (int x, int y) {
	return dgf[x] * inv[y] % mmm * inv[x - y] % mmm ;
}
int main () {
	dgf[0] = 1 ;
	for (int i = 1 ; i <= 2e6 ; i++)
		dgf[i] = dgf[i - 1] * i % mmm ;
	inv[2000000] = ftyguh (dgf[2000000]) ;
	for (int i = 2e6 - 1 ; ~i ; i--)
		inv[i] = inv[i + 1] * (i + 1) % mmm ;
	int T ;
	scanf ("%d", &T) ;
	while (T--) {
		scanf ("%lld", &n) ;
		int x = 1, y = 0 ;
		ll s = 0 ;
		while (n > x) n -= x;
		x++ ;
		y = n ;
		for (int i = 0 ; i < y ; i++) {
			int tx = x - i - 1, ty = y - i - 1 ;
			s = (s + c (tx + ty + i, i) * ((c (tx + ty, tx) - c (tx + ty, tx + 1) + mmm) % mmm) % mmm) % mmm ;
		}
		printf ("%lld\n", s) ;
	}
	return 0 ;
}
2022/7/12 08:50
加载中...