結果
| 問題 |
No.2326 Factorial to the Power of Factorial to the...
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-05-28 15:19:33 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,143 bytes |
| コンパイル時間 | 4,130 ms |
| コンパイル使用メモリ | 253,464 KB |
| 最終ジャッジ日時 | 2025-02-13 13:00:31 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 11 WA * 9 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using ll = long long;
#define MOD 1000000007
#define Mod 998244353
const int MAX = 1000000005;
const long long INF = 1000000000000000005LL;
using namespace std;
using namespace atcoder;
using mint = modint1000000007;
class factorial {
private:
vector<mint> fact;
vector<mint> ifact;
public:
factorial(const int& n) : fact(n + 1), ifact(n + 1) {
fact[0] = 1;
for (int i = 1; i <= n; i++) {
fact[i] = fact[i - 1] * i;
}
ifact[n] = fact[n].inv();
for (int i = n; i >= 1; i--) {
ifact[i - 1] = ifact[i] * i;
}
}
mint comb(const int& n, const int& k) {
if (k < 0 or k > n) {
return 0;
}
return fact[n] * ifact[k] * ifact[n - k];
}
mint get_fact(const int& n) { return fact[n]; }
mint get_ifact(const int& n) { return ifact[n]; }
};
int main() {
ios::sync_with_stdio(0);cin.tie();
int N, P;
cin >> N >> P;
factorial f(N);
ll c = 0;
for (int i = 1; i <= N; i++) {
int n = i;
while (n%P == 0) {
c++;
n /= P;
}
}
cout << f.get_fact(N).pow(f.get_fact(N).val()).val() * c % MOD << endl;
}