結果
問題 |
No.502 階乗を計算するだけ
|
ユーザー |
![]() |
提出日時 | 2025-02-22 18:23:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,603 bytes |
コンパイル時間 | 2,130 ms |
コンパイル使用メモリ | 192,896 KB |
実行使用メモリ | 13,764 KB |
最終ジャッジ日時 | 2025-02-22 18:23:21 |
合計ジャッジ時間 | 5,540 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 TLE * 1 -- * 19 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; inline int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=x*10+ch-48; ch=getchar(); } return x*f; } inline void print(int x){ static int s[55],t=0; do s[++t]=x%10,x/=10;while(x); while(t) putchar(s[t--] + '0'); } int n; const int MOD=1e9+7; int ksm(int a,int b){ int res=1; while(b){ if(b&1){ res=res*a%MOD; } a=a*a%MOD; b>>=1; } return res; } int fm(int x){ return ksm(x,MOD-2); } int solve(int n){ if(n>=MOD){ return 0; } if(n<=1e7){ int ans=1; for(int i=1;i<=n;i++){ ans=(ans*i)%MOD; } return ans; } long long blockSize=31623; long long blockFact=1; for(long long i=1;i<=blockSize;i++){ blockFact=blockFact*i%MOD; } long long res=1; long long numBlocks=n/blockSize; for(long long i=0;i<numBlocks;i++){ res=res*ksm(blockFact,i+1)%MOD; for(long long j=i*blockSize+1;j<=(i+1)*blockSize;j++){ res=res*j%MOD; } } for(long long i=numBlocks*blockSize+1;i<=n;i++){ res=res*i%MOD; } return res; } signed main(){ // freopen("factorial.in","r",stdin); // freopen("factorial.out","w",stdout); n=read(); cout<<solve(n)<<"\n"; return 0; } /*?? ?????? ??????????????????????? ???????????????????? ???????????5???????????????????????????????????????????????????????????????????????????????????????????????24????????????????????????????????????????????????????????????????????? ???????????????????? ???????????????????????????????????????????????????????????????????????????????????????????...????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...???????????????????????????????? ?????????????? ???????????? ????????????? ????????????? ????????? ??? ? ?? ? ??????? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????????????????????????? ????????????????????? ???????????????????? ????????????? ???????????????? ???????????????????????? ????????????????????????? ?????? ?????????????? ???????????? ??????????????????? ???????????? ?????? ????? ??????????? ?????????????? ????? ????? ????? ?????? ??????????????? ?????????? ?????????????? ???????????? ????*/