結果
問題 | No.502 階乗を計算するだけ |
ユーザー |
|
提出日時 | 2017-04-07 22:43:13 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 56 ms / 1,000 ms |
コード長 | 3,876 bytes |
コンパイル時間 | 1,023 ms |
コンパイル使用メモリ | 105,872 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-16 02:40:03 |
合計ジャッジ時間 | 2,829 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#define _USE_MATH_DEFINES#include <cstdio>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <algorithm>#include <cmath>#include <complex>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <set>#include <map>#include <bitset>#include <numeric>#include <limits>#include <climits>#include <cfloat>#include <functional>#include <iterator>using namespace std;const int MOD = 1000000007;const vector<pair<int, int> > tmp ={{ 0, 1 },{ 10000000, 682498929 },{ 20000000, 491101308 },{ 30000000, 76479948 },{ 40000000, 723816384 },{ 50000000, 67347853 },{ 60000000, 27368307 },{ 70000000, 625544428 },{ 80000000, 199888908 },{ 90000000, 888050723 },{ 100000000, 927880474 },{ 110000000, 281863274 },{ 120000000, 661224977 },{ 130000000, 623534362 },{ 140000000, 970055531 },{ 150000000, 261384175 },{ 160000000, 195888993 },{ 170000000, 66404266 },{ 180000000, 547665832 },{ 190000000, 109838563 },{ 200000000, 933245637 },{ 210000000, 724691727 },{ 220000000, 368925948 },{ 230000000, 268838846 },{ 240000000, 136026497 },{ 250000000, 112390913 },{ 260000000, 135498044 },{ 270000000, 217544623 },{ 280000000, 419363534 },{ 290000000, 500780548 },{ 300000000, 668123525 },{ 310000000, 128487469 },{ 320000000, 30977140 },{ 330000000, 522049725 },{ 340000000, 309058615 },{ 350000000, 386027524 },{ 360000000, 189239124 },{ 370000000, 148528617 },{ 380000000, 940567523 },{ 390000000, 917084264 },{ 400000000, 429277690 },{ 410000000, 996164327 },{ 420000000, 358655417 },{ 430000000, 568392357 },{ 440000000, 780072518 },{ 450000000, 462639908 },{ 460000000, 275105629 },{ 470000000, 909210595 },{ 480000000, 99199382 },{ 490000000, 703397904 },{ 500000000, 733333339 },{ 510000000, 97830135 },{ 520000000, 608823837 },{ 530000000, 256141983 },{ 540000000, 141827977 },{ 550000000, 696628828 },{ 560000000, 637939935 },{ 570000000, 811575797 },{ 580000000, 848924691 },{ 590000000, 131772368 },{ 600000000, 724464507 },{ 610000000, 272814771 },{ 620000000, 326159309 },{ 630000000, 456152084 },{ 640000000, 903466878 },{ 650000000, 92255682 },{ 660000000, 769795511 },{ 670000000, 373745190 },{ 680000000, 606241871 },{ 690000000, 825871994 },{ 700000000, 957939114 },{ 710000000, 435887178 },{ 720000000, 852304035 },{ 730000000, 663307737 },{ 740000000, 375297772 },{ 750000000, 217598709 },{ 760000000, 624148346 },{ 770000000, 671734977 },{ 780000000, 624500515 },{ 790000000, 748510389 },{ 800000000, 203191898 },{ 810000000, 423951674 },{ 820000000, 629786193 },{ 830000000, 672850561 },{ 840000000, 814362881 },{ 850000000, 823845496 },{ 860000000, 116667533 },{ 870000000, 256473217 },{ 880000000, 627655552 },{ 890000000, 245795606 },{ 900000000, 586445753 },{ 910000000, 172114298 },{ 920000000, 193781724 },{ 930000000, 778983779 },{ 940000000, 83868974 },{ 950000000, 315103615 },{ 960000000, 965785236 },{ 970000000, 492741665 },{ 980000000, 377329025 },{ 990000000, 847549272 },{ 1000000000, 698611116 },{ 1010000000, 0 },};int main(){long long n;cin >> n;if(n >= MOD){cout << 0 << endl;return 0;}int k = 0;while(tmp[k+1].first < n)++ k;long long x = tmp[k].second;for(long long i=tmp[k].first+1; i<=n; ++i){x *= i;x %= MOD;}cout << x << endl;return 0;}