結果
| 問題 |
No.1035 Color Box
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-02-27 14:58:12 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,094 bytes |
| コンパイル時間 | 483 ms |
| コンパイル使用メモリ | 61,540 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-06-23 05:10:17 |
| 合計ジャッジ時間 | 1,577 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 19 WA * 17 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
const ll MOD = (ll)1e9 + 7;
//Combination Mod
class Combination_Mod {
public:
vector<long long> fac, finv, inv;
long long MOD;
Combination_Mod(int N, long long mod) : fac(vector<long long>(N + 1)), finv(vector<long long>(N + 1)), inv(vector<long long>(N + 1)), MOD(mod) {
fac[0] = fac[1] = finv[0] = finv[1] = inv[1] = 1;
for (int i = 2; i <= N; ++i) {
fac[i] = fac[i - 1] * i % MOD;
inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
finv[i] = finv[i - 1] * inv[i] % MOD;
}
}
long long num(int n, int k) {
return ((n < 0 || k < 0 || n < k) ? 0 : fac[n] * (finv[k] * finv[n - k] % MOD) % MOD);
}
};
//Pow_Mod O(log(n))
long long Pow_Mod(long long x, long long n, long long mod) {
long long res = 1;
for (; n > 0; n >>= 1, (x *= x) %= mod) if (n & 1) (res *= x) %= mod;
return res;
}
int main() {
ll N, M, ans = 0; cin >> N >> M;
Combination_Mod CM(M, MOD);
for (ll i = M, sgn = 1; 1 <= i; --i, sgn *= -1) ans += sgn*CM.num(M, i)*Pow_Mod(i, N, MOD);
cout << ans << endl;
return 0;
}