제출 #1138887

#제출 시각아이디문제언어결과실행 시간메모리
1138887phamducminhZapina (COCI20_zapina)C++20
110 / 110
120 ms1384 KiB
#include <bits/stdc++.h> #include <iostream> #include <cmath> #include <vector> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <stack> #include <algorithm> #include <string> #include <queue> #include <cctype> #include <cstring> #include <iomanip> #include <deque> #include <random> #include <sstream> // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx,avx2,bmi,bmi2,popcnt,lzcnt") // #pragma GCC optimize("Ofast","inline","no-stack-protector") // #pragma GCC target("arch=skylake") using namespace std; #define file(name) freopen(name".inp","r",stdin);\ freopen(name".out","w",stdout); #define TIME (1.0*clock()/CLOCKS_PER_SEC) #define all(a) a.begin(),a.end() #define all1(a) a+1,a+n+1 #define ll long long const long long INF=1e18; const long long MOD=1e9+7; const long long MODD[] = {(long long)998244353,(long long)1e9+2277, (long long)1e9+5277}; // 998244353 const int maxN=2e5+9; const long long LOG=20; const double eps = 1e-1; //------------------------ void solve(); signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); // file("PNUM"); int t; // cin >> t; t=1; while (t--){ solve(); } cerr << "Time: " << TIME << "s.\n"; cerr << "ducminh"; return 0; } /// -------------- PROBLEM SOLUION -------------------- int n; long long dp[409][409]; long long fac[409], ifac[409]; long long binpow(long long a, long long b){ long long ans=1; while (b){ if (b&1) ans=ans*a%MOD; a=a*a%MOD; b>>=1; } return ans; } void genfac(int n){ fac[0]=1; for (int i=1; i<=n; i++){ fac[i]=fac[i-1]*i%MOD; } ifac[n]=binpow(fac[n], MOD-2); for (int i=n; i>=1; i--){ ifac[i-1]=ifac[i]*i%MOD; } } long long combine(int n, int k){ if (k < 0 || k > n) return 0; return fac[n]*ifac[k]%MOD*ifac[n-k]%MOD; } void solve(){ cin >> n; genfac(n+2); dp[0][0]=1; for (int i=1; i<=n; i++){ for (int j=0; j<=n; j++){ for (int k=0; k<=n-j; k++){ if (k!=i) (dp[i][j+k]+=dp[i-1][j]*combine(n-j,k)%MOD)%=MOD; } } } cout << (binpow(n,n)%MOD-dp[n][n]+MOD*MOD)%MOD; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...