이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
int b[3000000];
long long int asd(long long int i,long long int y){
long long int cnt=1,b[100000],t=0,j;
while(y!=0){t++; b[t]=y%2; y/=2;}
for(j=t;j>=1;j--){
if(b[j]==1) cnt*=i;
cnt%=1000000007;
if(j!=1) cnt*=cnt;
cnt%=1000000007;
}
return cnt;
}
int main(){
long long int n,i,x,y,t,f=0,cnt=0,count=0;
scanf("%lld",&n);
t=1;
if(n==1){printf("1"); return 0;}
x=1; y=1;
cnt=1;
while(t<=n){
x++;
if(f%2==0) y++;
t+=x*y;
f++;
cnt+=y;
}
t-=(x*y);
cnt-=y;
count=1;
for(i=cnt;i>=1;i--) {count*=i; count%=1000000007;b[i]=count;}
long long int xx=1,ccount=1,yy=1,flag=0;
while(xx<=cnt){
flag++;
ccount*=b[xx];
ccount%=1000000007;
if(flag%2==0) yy++;
xx+=yy;
}
n-=t;
i=cnt+1;
while(1){
if(n<0) break;
if(n>x) ccount*=asd(i,x); else ccount*=asd(i,n);
ccount%=1000000007;
n-=x;
i++;
}
printf("%lld",ccount);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
FG.cpp: In function 'int main()':
FG.cpp:16:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld",&n);
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |