题目链接(点这个)
题目的主要意思就是给你a,让你找一个全是强复合数的数组b让其元素最多
我们观察发现,任意两个相同的质因数相乘可以构成一个强复合数(例如4=2*2),任意3个不同的质因数也可以组成一个强复合数,故我们分解质因数来做这题即可
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
#define int long long
int ans,n;
int a[N];
map<int,int>g;
void fun(int x)
{
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
while(x%i==0)
x/=i,g[i]++;
}
}
if(x>1)g[x]++;
}
void solve()
{
int cnt=0;
int rem=0;
g.clear();
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
fun(a[i]);
}
for(auto ed:g)
{
int a=ed.first;
int b=ed.second;
cnt+=b/2;
rem+=b%2;
}
cout<<cnt+rem/3<<endl;
}
signed main()
{
int T;
cin>>T;
//T=1;
while(T--)solve();
return 0;
}