이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<cstdio>
#define je 1000000007
long long fact[2000001];
long long seq[1000001];
long long gop(long long x,long long y){
x%=je;y%=je;
x*=y;x%=je;
return x;
}
long long hap(long long x,long long y){
x%=je;y%=je;
x+=y;x%=je;
return x;
}
long long div(long long x,long long y){
x%=je;y%=je;
int left=je-2;
long long gopp=y,ret=1;
while(left){
if(left&1){
ret=gop(ret,gopp);
}
gopp=gop(gopp,gopp);
left >>= 1;
}
ret=gop(ret,x);
return ret;
}
int main(){
int n,k;
long long su;
scanf("%d %d",&n,&k);
seq[0]=1;
fact[0]=1;
su=div(1,k);
for(int i=1;i<=n;i++){
fact[i]=gop(fact[i-1],i);
}
for(int i=1;i<=n;i++){
seq[i]=gop(seq[i-1],k+1);
if(i%2){
su=gop(su,k);
seq[i]=hap(seq[i],je-gop(su,div(div(div(fact[i-1],fact[i/2]),fact[i/2]),(i/2)+1)));
}
}
printf("%lld\n",seq[n]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |