#include<stdio.h> #include<vector> #include<algorithm> using namespace std; const int MAX_N = 1e2, MAX_P = 1e6; int n, a[MAX_N], cnt[MAX_N], ck[MAX_P + 1]; vector<int> p; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", a + i); for (int i = 2; i <= MAX_P; i++) { if (ck[i]) continue; p.push_back(i); for (int j = i; j <= MAX_P; j += i) ck[j] = 1; } int r1 = 1, r2 = 0; for (auto it : p) { int s = 0; for (int i = 0; i < n; i++) { int t = a[i]; cnt[i] = 0; while (t%it == 0) cnt[i]++, t /= it; s += cnt[i]; } for (int i = 0; i < s / n; i++) r1 *= it; for (int i = 0; i < n; i++) r2 += max(s / n - cnt[i], 0); } printf("%d %d", r1, r2); return 0; }
2904번: 수학은 너무 쉬워 - 코드 수정 필요
https://www.acmicpc.net/problem/2904
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기