結果

問題 No.502 階乗を計算するだけ
ユーザー masamasa
提出日時 2017-04-08 01:22:52
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 165 ms / 1,000 ms
コード長 1,865 bytes
コンパイル時間 540 ms
コンパイル使用メモリ 69,040 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-09-23 03:35:44
合計ジャッジ時間 3,502 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,376 KB
testcase_01 AC 2 ms
4,376 KB
testcase_02 AC 2 ms
4,376 KB
testcase_03 AC 1 ms
4,376 KB
testcase_04 AC 1 ms
4,376 KB
testcase_05 AC 1 ms
4,376 KB
testcase_06 AC 2 ms
4,376 KB
testcase_07 AC 2 ms
4,380 KB
testcase_08 AC 2 ms
4,376 KB
testcase_09 AC 2 ms
4,380 KB
testcase_10 AC 2 ms
4,376 KB
testcase_11 AC 1 ms
4,376 KB
testcase_12 AC 1 ms
4,376 KB
testcase_13 AC 1 ms
4,376 KB
testcase_14 AC 1 ms
4,376 KB
testcase_15 AC 2 ms
4,376 KB
testcase_16 AC 2 ms
4,380 KB
testcase_17 AC 2 ms
4,376 KB
testcase_18 AC 2 ms
4,376 KB
testcase_19 AC 1 ms
4,376 KB
testcase_20 AC 1 ms
4,376 KB
testcase_21 AC 2 ms
4,380 KB
testcase_22 AC 17 ms
4,376 KB
testcase_23 AC 6 ms
4,380 KB
testcase_24 AC 12 ms
4,376 KB
testcase_25 AC 3 ms
4,380 KB
testcase_26 AC 8 ms
4,376 KB
testcase_27 AC 5 ms
4,380 KB
testcase_28 AC 7 ms
4,376 KB
testcase_29 AC 3 ms
4,380 KB
testcase_30 AC 16 ms
4,376 KB
testcase_31 AC 8 ms
4,380 KB
testcase_32 AC 101 ms
4,380 KB
testcase_33 AC 165 ms
4,380 KB
testcase_34 AC 153 ms
4,376 KB
testcase_35 AC 163 ms
4,376 KB
testcase_36 AC 86 ms
4,380 KB
testcase_37 AC 164 ms
4,376 KB
testcase_38 AC 71 ms
4,376 KB
testcase_39 AC 145 ms
4,380 KB
testcase_40 AC 27 ms
4,380 KB
testcase_41 AC 1 ms
4,376 KB
testcase_42 AC 1 ms
4,380 KB
testcase_43 AC 2 ms
4,376 KB
testcase_44 AC 2 ms
4,380 KB
testcase_45 AC 1 ms
4,380 KB
testcase_46 AC 2 ms
4,376 KB
testcase_47 AC 2 ms
4,376 KB
testcase_48 AC 2 ms
4,376 KB
testcase_49 AC 1 ms
4,380 KB
testcase_50 AC 2 ms
4,380 KB
testcase_51 AC 2 ms
4,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>

// #define _CALC

using namespace std;

long long mod = 1e9 + 7;
long long sub = 1e7;

long long fact[101] = {
	1,
	682498929,
	491101308,
	76479948,
	723816384,
	67347853,
	27368307,
	625544428,
	199888908,
	888050723,
	927880474,
	281863274,
	661224977,
	623534362,
	970055531,
	261384175,
	195888993,
	66404266,
	547665832,
	109838563,
	933245637,
	724691727,
	368925948,
	268838846,
	136026497,
	112390913,
	135498044,
	217544623,
	419363534,
	500780548,
	668123525,
	128487469,
	30977140,
	522049725,
	309058615,
	386027524,
	189239124,
	148528617,
	940567523,
	917084264,
	429277690,
	996164327,
	358655417,
	568392357,
	780072518,
	462639908,
	275105629,
	909210595,
	99199382,
	703397904,
	733333339,
	97830135,
	608823837,
	256141983,
	141827977,
	696628828,
	637939935,
	811575797,
	848924691,
	131772368,
	724464507,
	272814771,
	326159309,
	456152084,
	903466878,
	92255682,
	769795511,
	373745190,
	606241871,
	825871994,
	957939114,
	435887178,
	852304035,
	663307737,
	375297772,
	217598709,
	624148346,
	671734977,
	624500515,
	748510389,
	203191898,
	423951674,
	629786193,
	672850561,
	814362881,
	823845496,
	116667533,
	256473217,
	627655552,
	245795606,
	586445753,
	172114298,
	193781724,
	778983779,
	83868974,
	315103615,
	965785236,
	492741665,
	377329025,
	847549272,
	698611116,
};

void calc_mod_fact() {
	long long x = 1;

	cout << x << endl;
	for (int i = 1; i <= sub * 100; i++) {
		x = x * i % mod;
		if (i % sub == 0) {
			cout << x << endl;
		}
	}
}

int main() {
#ifdef _CALC
	calc_mod_fact();
#else
	long long n;
	cin >> n;

	if (n >= mod) {
		cout << 0 << endl;
		return 0;
	}
	int idx = n / sub;

	long long x = fact[idx];
	for (int i = idx * sub + 1; i <= n; i++) {
		x = x * i % mod;
	}

	cout << x << endl;
#endif
	return 0;
}
0