結果

問題 No.502 階乗を計算するだけ
ユーザー mamekinmamekin
提出日時 2017-04-07 22:43:13
言語 C++14
(gcc 10.1.0 + boost 1.73.0)
結果
AC  
実行時間 57 ms / 1,000 ms
コード長 3,876 Byte
コンパイル時間 719 ms
使用メモリ 1,560 KB
最終ジャッジ日時 2020-06-29 03:12:19

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
testcase_00 AC 3 ms
1,552 KB
testcase_01 AC 2 ms
1,556 KB
testcase_02 AC 2 ms
1,552 KB
testcase_03 AC 2 ms
1,556 KB
testcase_04 AC 2 ms
1,556 KB
testcase_05 AC 2 ms
1,552 KB
testcase_06 AC 2 ms
1,552 KB
testcase_07 AC 2 ms
1,552 KB
testcase_08 AC 2 ms
1,552 KB
testcase_09 AC 2 ms
1,552 KB
testcase_10 AC 2 ms
1,552 KB
testcase_11 AC 2 ms
1,556 KB
testcase_12 AC 2 ms
1,552 KB
testcase_13 AC 2 ms
1,556 KB
testcase_14 AC 2 ms
1,552 KB
testcase_15 AC 5 ms
1,552 KB
testcase_16 AC 2 ms
1,556 KB
testcase_17 AC 2 ms
1,556 KB
testcase_18 AC 2 ms
1,556 KB
testcase_19 AC 2 ms
1,552 KB
testcase_20 AC 2 ms
1,552 KB
testcase_21 AC 2 ms
1,552 KB
testcase_22 AC 8 ms
1,552 KB
testcase_23 AC 3 ms
1,556 KB
testcase_24 AC 6 ms
1,552 KB
testcase_25 AC 2 ms
1,552 KB
testcase_26 AC 4 ms
1,552 KB
testcase_27 AC 3 ms
1,556 KB
testcase_28 AC 3 ms
1,552 KB
testcase_29 AC 4 ms
1,556 KB
testcase_30 AC 7 ms
1,556 KB
testcase_31 AC 5 ms
1,552 KB
testcase_32 AC 36 ms
1,552 KB
testcase_33 AC 57 ms
1,556 KB
testcase_34 AC 53 ms
1,552 KB
testcase_35 AC 55 ms
1,552 KB
testcase_36 AC 30 ms
1,552 KB
testcase_37 AC 56 ms
1,552 KB
testcase_38 AC 25 ms
1,556 KB
testcase_39 AC 50 ms
1,548 KB
testcase_40 AC 10 ms
1,552 KB
testcase_41 AC 2 ms
1,552 KB
testcase_42 AC 2 ms
1,560 KB
testcase_43 AC 2 ms
1,556 KB
testcase_44 AC 2 ms
1,556 KB
testcase_45 AC 2 ms
1,560 KB
testcase_46 AC 3 ms
1,556 KB
testcase_47 AC 2 ms
1,556 KB
testcase_48 AC 2 ms
1,556 KB
testcase_49 AC 2 ms
1,556 KB
testcase_50 AC 2 ms
1,560 KB
testcase_51 AC 2 ms
1,556 KB
権限があれば一括ダウンロードができます

ソースコード

diff #
#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;
}
0