QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#634718 | #9451. Expected Waiting Time | ucup-team4938# | TL | 0ms | 0kb | C++14 | 1.4kb | 2024-10-12 17:57:41 | 2024-10-12 17:57:42 |
Judging History
answer
#include <bits/stdc++.h>
typedef long long ll;
#define int long long
int mod, n, A, B, a[2000010], b[2000010], c[2000010], f[2000010], fac[2000010], ifac[2000010];
void add(int &x,int y){x+=y;if(x>=mod)x-=mod;}
int qmd(int x){return x<mod?x:x-mod;}
int qpw(int x,int y=mod-2){int res=1;while(y>0){if(y&1)res=(ll)res*x%mod;x=(ll)x*x%mod;y>>=1;}return res;}
int H(int x){return (ll)fac[x<<1]*ifac[x]%mod*ifac[x+1]%mod;}
void solve(){
int i, ans = 0;
scanf("%lld%lld%lld%lld%lld", &n, &mod, &b[0], &A, &B);
for(i = 1, fac[0] = 1; i <= n << 1; i++){
fac[i] = (ll)fac[i - 1] * i % mod;
}
for(i = n << 1, ifac[n << 1] = qpw(fac[n << 1]); i > 0; i--){
ifac[i - 1] = (ll)ifac[i] * i % mod;
}
for(i = 0; i <= n; i++){
f[i] = (ll)H(i) * H(n - i - 1) % mod;
if(i > 0) f[i] = ((ll)f[i] + f[i - 1]) % mod;
// printf("%d %d %d %d %d\n", i, fac[i], ifac[i], H(i), f[i]);
}
for(i = 1, a[0] = 0, c[0] = 0; i <= n << 1; i++){
b[i] = ((ll)A * b[i - 1] + B) % mod;
a[i] = (a[i - 1] + b[i] + 1ll) % mod;
c[i] = a[i];
// printf("%d %d %d %d\n", i, a[i], b[i], c[i]);
}
for(i = 1; i <= n << 1; i++){
if(i >= 2) ans = (ans + (ll)c[i] * f[(i >> 1) - 1]) % mod;
if(i <= (n << 1) - 1) ans = (ans + (ll)c[i] * (mod - f[(n << 1) - i - 1 >> 1])) % mod;
}
printf("%lld\n", (ll)ans * qpw(H(n)) % mod);
}
signed main()
{
int t;
scanf("%d", &t);
while(t--) solve();
return 0;
}
详细
Test #1:
score: 0
Time Limit Exceeded
input:
5 1 1000000007 0 1 0 2 1000000007 0 1 1 2 7 5 2 3 3 31 15 6 24 20 1000000007 0 1 0
output:
1 12 1 21 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 879705565 ...