結果

問題 No.500 階乗電卓
ユーザー @abcde@abcde
提出日時 2019-02-27 23:46:29
言語 C++11
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,513 bytes
コンパイル時間 1,103 ms
コンパイル使用メモリ 161,948 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-06-23 05:23:19
合計ジャッジ時間 1,823 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
// const LL MOD = 1e12;
const LL MOD = 1e16;
int main() {
// 1. .
LL N;
cin >> N;
// 2. N! 10 12
// .
// https://www.nap.st/factorial_calculation/?lang=ja
// 50! = 30414093201713378043612608166064768844377641568960512000000000000
// -> , 50! , 12, 000000000000 .
// , N 50 , 000000000000 .
// 2-1. N >= 50 .
if(N >= 50){
cout << "000000000000" << endl;
return 0;
}
// 2-2. N < 50 .
LL ans = 1;
// for(int i = 1; i <= N; i++) ans *= i, ans %= MOD;
// for(LL i = 1; i <= N; i++) ans *= i, ans %= MOD;
// for(LL i = N; i > 1; i--) ans *= i, ans %= MOD;
// cout << ans << endl;
// -> test7.txt, test8.txt , WA, .
// -> 20! = 2432902008176640000 , 8176640000 (10) .
// , 10 16 ,
// , 12.
for(int i = 1; i <= N; i++) ans *= i, ans %= MOD;
string sAns = to_string(ans);
if(sAns.size() > 12) sAns = sAns.substr(sAns.size() - 12, 12);
cout << sAns << endl;
// 3. .
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0