有条件的不重复排列问题

xmuoj

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 4;
ll f[N][2], n, k;
const ll mod = 1e9 + 7;

int main(){
    cin >> n >> k;
    f[1][0] = k;
    for(int i = 2; i <= n; i++){
        f[i][0] = (f[i - 1][0] + f[i - 1][1]) % mod * (k - 1) % mod;
        f[i][1] = (f[i - 1][0]) % mod;
    }
    cout<<(f[n][0] + f[n][1])%mod;
}

posted @ 2022-03-25 09:59  兮何其  阅读(37)  评论(0)    收藏  举报