Submission #1286788

#TimeUsernameProblemLanguageResultExecution timeMemory
1286788arman.khachatryanZapina (COCI20_zapina)C++20
55 / 110
1090 ms1084 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const long long N=360, MOD=1e9+7;
ll fact[N], dp[N][N];

ll sum(ll a, ll b){
    if(a+b>=MOD){
        return a+b-MOD;
    }
    return a+b;
}

ll mult(ll a, ll b){
    return (a*b)%MOD;
}

ll BinPow(ll x, ll y){
    ll ans=1;
    while(y>0){
        if(y&1){
            ans=mult(ans, x);
        }
        x=mult(x, x);
        y>>=1;
    }
    return ans;
}

ll C(ll n, ll k) {
    return mult(fact[n], BinPow(mult(fact[k], fact[n-k]), MOD-2));
}

int main() {
    ll n;
    cin>>n;
    for(int i=1; i<=n; i++){
        dp[1][i]=0;
        dp[i][1]=1;
    }
    fact[0]=1;
    for(int i=1; i<=N; i++){
        fact[i]=mult(fact[i-1], i);
    }
    for(int i=2; i<=n; i++){
        for(int j=2; j<=n; j++){
            for(int k=0; k<=j; k++){
                if(k==i){
                    dp[i][j]=sum(dp[i][j], mult(C(j, k), BinPow(i-1, j-k)));
                }else{
                    dp[i][j]=sum(dp[i][j], mult(dp[i-1][j-k], C(j, k)));
                }
            }
        }
    }
    cout<<dp[n][n];
}

Compilation message (stderr)

zapina.cpp: In function 'int main()':
zapina.cpp:43:16: warning: iteration 359 invokes undefined behavior [-Waggressive-loop-optimizations]
   43 |         fact[i]=mult(fact[i-1], i);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~
zapina.cpp:42:19: note: within this loop
   42 |     for(int i=1; i<=N; i++){
      |                  ~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...