Submission #19922

# Submission time Handle Problem Language Result Execution time Memory
19922 2016-02-25T07:17:08 Z tncks0121 순열 (kriii4_T) C++14
100 / 100
97 ms 24636 KB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <string>
#include <functional>
#include <vector>
#include <deque>
#include <utility>
#include <bitset>
#include <limits.h>
#include <time.h>
#include <functional>
#include <numeric>
 
using namespace std;
typedef long long ll;
typedef unsigned long long llu;
typedef double lf;
typedef unsigned int uint;
typedef long double llf;
typedef pair<int, int> pii;
typedef pair<ll, int> pli;

#define debug(format, ...) printf(format, __VA_ARGS__);


const ll MOD = (ll)1e9 + 7;

ll modpow (ll a, ll b) {
    a %= MOD;
    ll ret = 1;
    while(b > 0) {
        if(b & 1) ret = (ret * a) % MOD;
        a = (a * a) % MOD;
        b >>= 1;
    }
    return ret;
}

struct mint {
    ll val;
    mint(ll val = 0): val((val % MOD + MOD) % MOD) { }
    mint operator+(mint p) { return val + p.val; }
    mint operator-(mint p) { return val - p.val; }
    mint operator*(mint p) { return val * p.val; }
    mint operator/(mint p) { return val * modpow(p.val, MOD-2); }
};

int N, K;

const int N_ = 1005000;
mint inv[N_];
mint fac[N_], invfac[N_];


int main() {
	scanf("%d%d", &N, &K);

    // precalc section
    {
        inv[1] = 1;
        for(int i = 2; i < N_; i++) {
            inv[i] = inv[MOD % i] * -(MOD / i);
        }
      
        invfac[0] = fac[0] = 1;
        for(int i = 1; i < N_; i++) {
            fac[i] = fac[i-1] * i;
            invfac[i] = invfac[i-1] * inv[i];
        }
    }

    mint ans;
    for(int i = K+1; i <= N; i++) {
    	ans = ans + fac[N+1] * inv[i+1] * (N+1-i);
    }

    printf("%lld\n", ans.val);

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 66 ms 24636 KB Output is correct
2 Correct 65 ms 24636 KB Output is correct
3 Correct 62 ms 24636 KB Output is correct
4 Correct 62 ms 24636 KB Output is correct
5 Correct 65 ms 24636 KB Output is correct
6 Correct 62 ms 24636 KB Output is correct
7 Correct 61 ms 24636 KB Output is correct
8 Correct 65 ms 24636 KB Output is correct
9 Correct 64 ms 24636 KB Output is correct
10 Correct 65 ms 24636 KB Output is correct
11 Correct 64 ms 24636 KB Output is correct
12 Correct 69 ms 24636 KB Output is correct
13 Correct 69 ms 24636 KB Output is correct
14 Correct 60 ms 24636 KB Output is correct
15 Correct 62 ms 24636 KB Output is correct
16 Correct 61 ms 24636 KB Output is correct
17 Correct 62 ms 24636 KB Output is correct
18 Correct 64 ms 24636 KB Output is correct
19 Correct 75 ms 24636 KB Output is correct
20 Correct 67 ms 24636 KB Output is correct
21 Correct 69 ms 24636 KB Output is correct
22 Correct 68 ms 24636 KB Output is correct
23 Correct 64 ms 24636 KB Output is correct
24 Correct 67 ms 24636 KB Output is correct
25 Correct 65 ms 24636 KB Output is correct
26 Correct 65 ms 24636 KB Output is correct
27 Correct 64 ms 24636 KB Output is correct
28 Correct 65 ms 24636 KB Output is correct
29 Correct 61 ms 24636 KB Output is correct
30 Correct 66 ms 24636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 86 ms 24636 KB Output is correct
2 Correct 69 ms 24636 KB Output is correct
3 Correct 73 ms 24636 KB Output is correct
4 Correct 71 ms 24636 KB Output is correct
5 Correct 72 ms 24636 KB Output is correct
6 Correct 64 ms 24636 KB Output is correct
7 Correct 90 ms 24636 KB Output is correct
8 Correct 81 ms 24636 KB Output is correct
9 Correct 69 ms 24636 KB Output is correct
10 Correct 66 ms 24636 KB Output is correct
11 Correct 74 ms 24636 KB Output is correct
12 Correct 62 ms 24636 KB Output is correct
13 Correct 68 ms 24636 KB Output is correct
14 Correct 78 ms 24636 KB Output is correct
15 Correct 75 ms 24636 KB Output is correct
16 Correct 77 ms 24636 KB Output is correct
17 Correct 79 ms 24636 KB Output is correct
18 Correct 68 ms 24636 KB Output is correct
19 Correct 66 ms 24636 KB Output is correct
20 Correct 73 ms 24636 KB Output is correct
21 Correct 72 ms 24636 KB Output is correct
22 Correct 76 ms 24636 KB Output is correct
23 Correct 70 ms 24636 KB Output is correct
24 Correct 72 ms 24636 KB Output is correct
25 Correct 64 ms 24636 KB Output is correct
26 Correct 75 ms 24636 KB Output is correct
27 Correct 66 ms 24636 KB Output is correct
28 Correct 68 ms 24636 KB Output is correct
29 Correct 97 ms 24636 KB Output is correct
30 Correct 92 ms 24636 KB Output is correct