Pagini recente » Cod sursa (job #3129874) | Cod sursa (job #802168) | Cod sursa (job #2772259) | Cod sursa (job #1930430) | Cod sursa (job #2753992)
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
void read_uint32_t(FILE *__restrict stream, uint32_t *__restrict nr) {
uint8_t ch;
*nr = 0;
while ((ch = fgetc(stream)) && ('0' <= ch && ch <= '9')) {
*nr *= 10;
*nr += ch - '0';
}
if (ch == '\r') {
fgetc(stream);
}
}
uint32_t a[100001];
uint64_t min(uint64_t o1, uint64_t o2) {
return o1 < o2 ? o1 : o2;
}
uint32_t max(uint32_t o1, uint32_t o2) {
return o1 > o2 ? o1 : o2;
}
int main() {
uint32_t q, n, h;
uint64_t sol;
{
FILE *__restrict in = fopen("minlcm.in", "r");
FILE *__restrict out = fopen("minlcm.out", "w");
read_uint32_t(in, &q);
int32_t i, j;
uint32_t min1, min2;
uint32_t x, ma = 0;
sol = UINT64_MAX;
for (h = 0; h < q; ++h) {
if (h > 0) {
memset(a, 0, sizeof(a));
}
read_uint32_t(in, &n);
for (j = 0; j < n; ++j) {
read_uint32_t(in, &x);
ma = max(ma, x);
a[x] = 1;
}
for (i = 1; i <= ma; ++i) {
min1 = min2 = 0;
for (j = i; j <= ma; j += i) {
if (a[j] == 1) {
if (min1 == 0) {
min1 = j;
} else {
min2 = j;
goto found_both;
}
}
}
found_both:;
if (min2 != 0) {
sol = min(sol, (uint64_t) min1 * (uint64_t) min2 / (uint64_t) i);
}
}
fprintf(out, "%llu\n", sol);
}
fclose(in);
fclose(out);
}
return 0;
}