Submission #68670906


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7; //1000000007

/*
組み合わせ計算の方法およびソースコードは
https://algo-logic.info/combination/
を参照した
*/

vector<long long> fact_inv, inv;


/*  init_nCk :二項係数のための前処理
    計算量:O(k)
*/
void init_nCk(int SIZE) {
    fact_inv.resize(SIZE + 5);
    inv.resize(SIZE + 5);
    fact_inv[0] = fact_inv[1] = 1;
    inv[1] = 1;
    for (int i = 2; i < SIZE + 5; i++) {
        inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;
        fact_inv[i] = fact_inv[i - 1] * inv[i] % MOD;
    }
}
/*  nCk :MODでの二項係数を求める(前処理 int_nCk が必要)
    計算量:O(k)
*/
long long nCk(int n, int k) {
    assert(!(n < k));
    assert(!(n < 0 || k < 0));
    long long ans = 1;
    for (int i = n; i >= n - k + 1; i--) {
        ans *= i;
        ans %= MOD;
    }
    return ans * fact_inv[k] % MOD;
}

int main(){
    int stairs_number, jump_steps;
    cin >> stairs_number >> jump_steps;


    long long pattern_count = 1; //all 1段上りは確定で1パータン存在する

    int iteration_number = stairs_number/jump_steps;

    for(int i = 1; i <= iteration_number;i++){
        int onestep_jump_num = stairs_number - jump_steps * i;
        init_nCk(i+onestep_jump_num);
        long long tmp = nCk(i+onestep_jump_num,i);

        pattern_count += tmp;
        
    }
    
    cout << pattern_count % MOD << endl;
    
}

Submission Info

Submission Time
Task 050 - Stair Jump(★3)
User ryamamoto
Language C++ 20 (gcc 12.2)
Score 3
Code Size 1519 Byte
Status AC
Exec Time 31 ms
Memory 4740 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 3 / 3
Status
AC × 4
AC × 64
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 10_small_random_00.txt, 10_small_random_01.txt, 10_small_random_02.txt, 10_small_random_03.txt, 10_small_random_04.txt, 10_small_random_05.txt, 10_small_random_06.txt, 10_small_random_07.txt, 10_small_random_08.txt, 10_small_random_09.txt, 10_small_random_10.txt, 10_small_random_11.txt, 10_small_random_12.txt, 10_small_random_13.txt, 10_small_random_14.txt, 10_small_random_15.txt, 10_small_random_16.txt, 10_small_random_17.txt, 10_small_random_18.txt, 10_small_random_19.txt, 11_large_random_00.txt, 11_large_random_01.txt, 11_large_random_02.txt, 11_large_random_03.txt, 11_large_random_04.txt, 11_large_random_05.txt, 11_large_random_06.txt, 11_large_random_07.txt, 11_large_random_08.txt, 11_large_random_09.txt, 11_large_random_10.txt, 11_large_random_11.txt, 11_large_random_12.txt, 11_large_random_13.txt, 11_large_random_14.txt, 11_large_random_15.txt, 11_large_random_16.txt, 11_large_random_17.txt, 11_large_random_18.txt, 11_large_random_19.txt, 20_max_random_00.txt, 20_max_random_01.txt, 20_max_random_02.txt, 20_max_random_03.txt, 20_max_random_04.txt, 20_max_random_05.txt, 20_max_random_06.txt, 20_max_random_07.txt, 20_max_random_08.txt, 20_max_random_09.txt, 20_max_random_10.txt, 20_max_random_11.txt, 20_max_random_12.txt, 20_max_random_13.txt, 20_max_random_14.txt, 20_max_random_15.txt, 20_max_random_16.txt, 20_max_random_17.txt, 20_max_random_18.txt, 20_max_random_19.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3608 KiB
00_sample_01.txt AC 1 ms 3488 KiB
00_sample_02.txt AC 1 ms 3532 KiB
00_sample_03.txt AC 2 ms 3640 KiB
10_small_random_00.txt AC 1 ms 3492 KiB
10_small_random_01.txt AC 1 ms 3428 KiB
10_small_random_02.txt AC 1 ms 3480 KiB
10_small_random_03.txt AC 1 ms 3520 KiB
10_small_random_04.txt AC 1 ms 3556 KiB
10_small_random_05.txt AC 1 ms 3644 KiB
10_small_random_06.txt AC 1 ms 3548 KiB
10_small_random_07.txt AC 1 ms 3636 KiB
10_small_random_08.txt AC 1 ms 3480 KiB
10_small_random_09.txt AC 1 ms 3488 KiB
10_small_random_10.txt AC 1 ms 3484 KiB
10_small_random_11.txt AC 1 ms 3492 KiB
10_small_random_12.txt AC 1 ms 3520 KiB
10_small_random_13.txt AC 1 ms 3496 KiB
10_small_random_14.txt AC 1 ms 3608 KiB
10_small_random_15.txt AC 1 ms 3472 KiB
10_small_random_16.txt AC 1 ms 3456 KiB
10_small_random_17.txt AC 1 ms 3552 KiB
10_small_random_18.txt AC 1 ms 3536 KiB
10_small_random_19.txt AC 1 ms 3496 KiB
11_large_random_00.txt AC 31 ms 4492 KiB
11_large_random_01.txt AC 1 ms 3428 KiB
11_large_random_02.txt AC 2 ms 3892 KiB
11_large_random_03.txt AC 1 ms 3800 KiB
11_large_random_04.txt AC 1 ms 3804 KiB
11_large_random_05.txt AC 1 ms 3568 KiB
11_large_random_06.txt AC 1 ms 3692 KiB
11_large_random_07.txt AC 1 ms 3680 KiB
11_large_random_08.txt AC 2 ms 3856 KiB
11_large_random_09.txt AC 1 ms 3516 KiB
11_large_random_10.txt AC 1 ms 3596 KiB
11_large_random_11.txt AC 1 ms 3424 KiB
11_large_random_12.txt AC 1 ms 3696 KiB
11_large_random_13.txt AC 2 ms 3696 KiB
11_large_random_14.txt AC 1 ms 3480 KiB
11_large_random_15.txt AC 28 ms 4404 KiB
11_large_random_16.txt AC 1 ms 3512 KiB
11_large_random_17.txt AC 1 ms 3604 KiB
11_large_random_18.txt AC 2 ms 3612 KiB
11_large_random_19.txt AC 1 ms 3852 KiB
20_max_random_00.txt AC 2 ms 4208 KiB
20_max_random_01.txt AC 1 ms 3912 KiB
20_max_random_02.txt AC 1 ms 3636 KiB
20_max_random_03.txt AC 2 ms 3548 KiB
20_max_random_04.txt AC 7 ms 4684 KiB
20_max_random_05.txt AC 1 ms 3696 KiB
20_max_random_06.txt AC 2 ms 4192 KiB
20_max_random_07.txt AC 1 ms 3488 KiB
20_max_random_08.txt AC 2 ms 4192 KiB
20_max_random_09.txt AC 1 ms 3952 KiB
20_max_random_10.txt AC 2 ms 4288 KiB
20_max_random_11.txt AC 1 ms 3668 KiB
20_max_random_12.txt AC 2 ms 4224 KiB
20_max_random_13.txt AC 6 ms 4616 KiB
20_max_random_14.txt AC 3 ms 4420 KiB
20_max_random_15.txt AC 1 ms 3612 KiB
20_max_random_16.txt AC 11 ms 4740 KiB
20_max_random_17.txt AC 2 ms 4136 KiB
20_max_random_18.txt AC 1 ms 3940 KiB
20_max_random_19.txt AC 3 ms 4552 KiB