結果
| 問題 | No.502 階乗を計算するだけ |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-02-22 21:54:48 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,273 bytes |
| 記録 | |
| コンパイル時間 | 1,480 ms |
| コンパイル使用メモリ | 161,796 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2025-02-22 21:54:51 |
| 合計ジャッジ時間 | 3,299 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 52 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:3:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
3 | freopen("factorial.in","r",stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:4:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
4 | freopen("factorial.out","w",stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h>
int main() {
freopen("factorial.in","r",stdin);
freopen("factorial.out","w",stdout);
std::ios::sync_with_stdio(false),std::cin.tie(nullptr);
long long n,i,ans1=1,ans2=1,ans3=1,ans4=1,ans5=1,ans6=1,ans7=1,ans8=1; const int Mod=1e9+7; const __uint128_t brt=((__uint128_t)1<<64)/Mod;
std::cin>>n;
if(n>=Mod) return std::cout<<0,0;
for(i=1;i+8<=n;i+=8) {
ans1*=i,ans2*=(i+1),ans3*=(i+2),ans4*=(i+3),ans5*=(i+4),ans6*=(i+5),ans7*=(i+6),ans8*=(i+7);
ans1=ans1-Mod*(brt*ans1>>64);
ans2=ans2-Mod*(brt*ans2>>64);
ans3=ans3-Mod*(brt*ans3>>64);
ans4=ans4-Mod*(brt*ans4>>64);
ans5=ans5-Mod*(brt*ans5>>64);
ans6=ans6-Mod*(brt*ans6>>64);
ans7=ans7-Mod*(brt*ans7>>64);
ans8=ans8-Mod*(brt*ans8>>64);
if(ans1>=Mod) ans1-=Mod;
if(ans2>=Mod) ans2-=Mod;
if(ans3>=Mod) ans3-=Mod;
if(ans4>=Mod) ans4-=Mod;
if(ans5>=Mod) ans5-=Mod;
if(ans6>=Mod) ans6-=Mod;
if(ans7>=Mod) ans7-=Mod;
if(ans8>=Mod) ans8-=Mod;
}
ans1=ans1*ans2%Mod;
ans3=ans3*ans4%Mod;
ans5=ans5*ans6%Mod;
ans7=ans7*ans8%Mod;
ans1=ans1*ans3%Mod;
ans5=ans5*ans7%Mod;
long long ans=ans1*ans5%Mod;
for(;i<=n;i++) ans=ans*i%Mod;
std::cout<<ans;
return 0;
}
vjudge1