The Factor
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 495 Accepted Submission(s): 154
For each testcase, there are two lines:
1. The first line contains one integer denoting the value of n (1≤n≤100).
2. The second line contains n integers a1,…,an (1≤a1,…,an≤2×109), which denote these n positive integers.
2 3 1 2 3 5 6 6 6 6 6
6 4
每个数有用的是自己的质因子,求出质因子并保存,最小的两个乘积即为答案。
AC代码:
#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
const int MAXN = 110;
typedef long long ll;
int n;
ll a[MAXN], ans[MAXN << 2];
int main(int argc, char const *argv[])
{
int t;
scanf("%d", &t);
while(t--) {
int cnt = 0;
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%lld", &a[i]);
for(int j = 2; (ll)j * j <= a[i]; ++j)
while(a[i] % j == 0) {
ans[cnt++] = j;
a[i] /= j;
}
if(a[i] != 1) ans[cnt++] = a[i];
}
if(cnt < 2) printf("-1\n");
else {
sort(ans, ans + cnt);
printf("%lld\n", ans[0] * ans[1]);
}
}
return 0;
}</span>
3647



被折叠的 条评论
为什么被折叠?



