Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
536 B
0
Indexable
Never
#include <vector> 
#define MOD 1000000007

int add(int a,int b){
    return (a%MOD +b%MOD)%MOD;
}
int mul(int a,int b){
    return ((a%MOD)* 1LL* (b%MOD))%MOD;
}



int drive(int n,int k,vector<int> &dp){
    if(n==1) return k;
    if(n==2) return mul(k,k);

    if(dp[n]!=-1) return dp[n];

    dp[n]=  add(mul(drive(n-1,k,dp),(k-1)) , mul(drive(n-2,k,dp),k-1));
    return dp[n];




}
int numberOfWays(int n, int k) {
    // Write your code here.
    vector<int> dp(n+1,-1);
    return drive(n,k,dp);
}