이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
const long long mod = 1000000007;
long long inv[500002],cat[500001];
int main()
{
int n,k; scanf ("%d %d",&n,&k);
inv[1] = 1;
for (int i=2;i<=n/2+1;i++) inv[i] = (mod - mod / i) * inv[mod % i] % mod;
cat[0] = 1;
for (int i=1;i<=n/2;i++) cat[i] = (4 * i - 2) * inv[i+1] % mod * cat[i-1] % mod;
long long u = 1;
for (int i=1;i<=n/2;i++){
u = u * k % mod;
cat[i] = cat[i] * u % mod;
}
long long ans = 1;
for (int i=0;i<n;i++){
ans = ans * (k + 1) % mod;
if (i % 2 == 0) ans = (ans + mod - cat[i/2]) % mod;
}
printf ("%lld\n",ans);
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |