結果
問題 | No.140 みんなで旅行 |
ユーザー |
|
提出日時 | 2021-09-07 19:14:16 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 13 ms / 5,000 ms |
コード長 | 845 bytes |
コンパイル時間 | 1,963 ms |
コンパイル使用メモリ | 167,124 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2024-12-23 17:58:50 |
合計ジャッジ時間 | 2,817 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
#include <bits/stdc++.h> using namespace std; long long n, m = 1; const long long M = 1e9 + 7; long long p[556][556], c[556][556]; long long powm(long long a, long long b) { long long u = 1, v = a; while (b > 0) { if (b & 1) u = u * v % M; b >>= 1; v = v * v % M; } return u; } int main() { cin >> n; c[0][0] = 1; for (int i = 1; i <= n; i++) { c[i][0] = 1; c[i][i] = 1; for (int j = 1; j < n; j++) c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % M; } p[0][0] = 1; for (int i = 1; i <= n; i++) { p[i][0] = 1; p[i][i] = 1; for (long long j = 1; j < n; j++) p[i][j] = (p[i - 1][j - 1] + (j + 1) * p[i - 1][j]) % M; } for (long long i = 1; i < n; i++) { for (long long j = 0; j < n - i; j++) { m = (m + p[n - j - 1][i] * c[n][j] % M * powm(i * (i + 1), j) % M) % M; } } cout << m << endl; }