페이지

2904번: 수학은 너무 쉬워 - 코드 수정 필요

https://www.acmicpc.net/problem/2904


#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;
}

댓글 없음 :

댓글 쓰기