結果
問題 | No.502 階乗を計算するだけ |
ユーザー |
![]() |
提出日時 | 2017-04-16 22:49:38 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 166 ms / 1,000 ms |
コード長 | 2,505 bytes |
コンパイル時間 | 1,750 ms |
コンパイル使用メモリ | 169,464 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-19 04:06:41 |
合計ジャッジ時間 | 4,239 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#include "bits/stdc++.h"#define ALL(a) (a).begin(),(a).end()#define SORT(c) sort((c).begin(),(c).end())#define DESCSORT(c) sort(c.begin(), c.end(), greater<int>())using namespace std;using LL = long long int;using LD = long double;using pii = pair<int, int>;using pll = pair<LL, LL>;using pdd = pair<double, double>;using vi = vector<int>;using vvi = vector<vi>;using vvvi = vector<vvi>;using vl = vector<LL>;using vvl = vector<vl>;using vvvl = vector<vvl>;using vd = vector<double>;using vvd = vector<vd>;using vs = vector<string>;using vb = vector<bool>;using vvb = vector<vb>;const int INF = (1 << 30) - 1;const LL INF64 = ((LL)1 << 62) - 1;const double PI = 3.1415926535897932384626433832795;const int dy[] = { 0, 1, 0, -1 };const int dx[] = { 1, 0, -1, 0 };int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }LL gcd(LL x, LL y) { return y ? gcd(y, x % y) : x; }LL MOD = 1e9 + 7;int main() {ios::sync_with_stdio(false);cin.tie(0);vl a = { 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 };LL n;cin >> n;if (MOD <= n) {cout << 0 << endl;} else {LL ret = a[n / 10000000];for (int i = n / 10000000 * 10000000 + 1; i <= n; i++) {ret = ret * i % MOD;}cout << ret << endl;}return 0;}