結果
| 問題 |
No.8053 2.5 色で色塗り
|
| コンテスト | |
| ユーザー |
259_Momone
|
| 提出日時 | 2019-04-01 23:41:55 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,272 bytes |
| コンパイル時間 | 1,559 ms |
| コンパイル使用メモリ | 168,528 KB |
| 実行使用メモリ | 6,816 KB |
| 最終ジャッジ日時 | 2024-11-27 05:09:17 |
| 合計ジャッジ時間 | 7,783 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 9 TLE * 1 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
int main(){
constexpr unsigned long MOD = 1000000007, colors = (5 + MOD) >> 1;
unsigned long N, M;
cin >> N >> M;
auto modpow = [&MOD](unsigned long a, unsigned long n, unsigned long r = 1){
unsigned long ret{r};
while(n){
if(n & 1){
ret *= a;
ret %= MOD;
}
a *= a;
a %= MOD;
n >>= 1;
}
return ret;
};
vector<unsigned long> vec(N + 1);
unsigned long coef{1};
for(unsigned long i = 1; i <= N; ++i){
coef *= colors - i + 1;
coef %= MOD;
coef *= modpow(i, MOD - 2);
coef %= MOD;
unsigned long C{0}, D{1};
for(unsigned long j = 0; j < i; ++j){
unsigned long tapi{modpow(i - j, N)};
tapi *= D;
tapi %= MOD;
C += j & 1 ? MOD - tapi : tapi;
D *= i - j;
D %= MOD;
D *= modpow(j + 1, MOD - 2);
D %= MOD;
}
C %= MOD;
vec[i] = C * coef % MOD;
}
long ans{0};
for(unsigned long j = 0; j <= N; ++j){
ans += modpow(colors - j, M, vec[j]) % MOD;
}
cout << ans % MOD << endl;
return 0;
}
259_Momone