题目
思路:提前将10^7的数据的最简数据保存在一个数组中,然后直接使用
AC代码:
package 练习;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;
public class M {
static Scanner scanner=new Scanner(System.in);
static BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
String string=bf.readLine();
int q=Integer.valueOf(string);
int p[]=new int [10000001];
p[1]=1;
for(int i=0;i<p.length;i++)p[i]=i;
for(int i=2;i*i<p.length;i++) {
int t=i*i;
for (int j=t;j<p.length;j+=t)p[j]=j/t;
}
while(q-->0) {
String ss[]=bf.readLine().split(" ");
int n=Integer.valueOf(ss[0]);
int m=Integer.valueOf(ss[1]);
String sss[]=bf.readLine().split(" ");
int a[]=new int [n];
for(int i=0;i<n;i++) {
a[i]=p[Integer.valueOf(sss[i])];
}
Set<Integer>set=new HashSet<Integer>();
int ans=0;
for(int i=0;i<n;i++) {
if(set.contains(a[i])) {
ans++;
set=new HashSet<Integer>();
}
set.add(a[i]);
}
System.out.println(++ans);
}
}
}