結果
問題 | No.368 LCM of K-products |
ユーザー |
![]() |
提出日時 | 2016-04-29 23:23:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 109 ms / 2,000 ms |
コード長 | 1,598 bytes |
コンパイル時間 | 1,190 ms |
コンパイル使用メモリ | 121,216 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-22 14:43:24 |
合計ジャッジ時間 | 2,421 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 35 |
ソースコード
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>//#include<cctype>#include<climits>#include<iostream>#include<string>#include<vector>#include<map>//#include<list>#include<queue>#include<deque>#include<algorithm>//#include<numeric>#include<utility>#include<complex>//#include<memory>#include<functional>#include<cassert>#include<set>#include<stack>#include<random>const int dx[] = {1, 0, -1, 0};const int dy[] = {0, 1, 0, -1};using namespace std;typedef long long ll;typedef unsigned long long ull;typedef vector<int> vi;typedef vector<ll> vll;typedef pair<int, int> pii;const int MAXN = 1010;int A[MAXN];map<int, vi> mp;void calc(int x, map<int, int>& M) {for (int i = 2; i*i <= x; i++) {int cnt = 0;while (x%i == 0) {x /= i;cnt++;}if (cnt) M[i] += cnt;}if (x > 1) M[x] += 1;}const int MOD = 1e9+7;int main() {cin.tie(0);ios::sync_with_stdio(false);int N, K;cin >> N >> K;for (int i = 0; i < N; i++) {cin >> A[i];map<int, int> M;calc(A[i], M);for (auto p : M) {mp[p.first].push_back(p.second);}}ll ans = 1;for (auto& p : mp) {sort(p.second.rbegin(), p.second.rend());int sz = min<int>(K, p.second.size());int sum = 0;for (int i = 0; i < sz; i++) sum += p.second[i];for (int i = 0; i < sum; i++) (ans *= p.first) %= MOD;}cout << ans << endl;return 0;}