这最后一个点卡的也太离谱了吧
查看原帖
这最后一个点卡的也太离谱了吧
324851
皮卡丘巧克力楼主2021/11/25 22:56
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, q, a[1000006], jc[100005], ny[100005], mod = 998244353, ans, x, y;
ll quick(ll x, ll t){
	ll now = 1;
	while(t){
		if(t&1) now = x * now % mod;
		x = x * x % mod;
		t >>= 1;
	}
	return now;
}
void init(){
	jc[0] = jc[1] = ny[0] = ny[1] = 1;
	for(int i=2;i<=2000;i++){
		jc[i] = jc[i-1] * i % mod;
		ny[i] = quick(jc[i], mod-2);
	}
}
int main(){
	init();
	scanf("%lld", &n);
	for(register int i=0;i<n;i++) scanf("%lld", &a[i]);
	scanf("%lld", &q);
	for(register int i=1;i<=q;i++){
		scanf("%lld%lld", &x, &y); y--; ans = 0;
		for(register int j=0;j<=x;j++){
			ans = (ans + a[(y+j)%n] * (jc[x] * ny[j] % mod * ny[x-j] % mod) % mod) % mod;
		}
		printf("%lld\n", ans);
	}
	return 0;
}

不加register就TLE……

2021/11/25 22:56
加载中...