HDU 3335 解题报告

Divisibility

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 524    Accepted Submission(s): 171

Problem Description
As we know,the fzu AekdyCoin is famous of math,especially in the field of number theory.So,many people call him "the descendant of Chen Jingrun",which brings him a good reputation.
AekdyCoin also plays an important role in the ACM_DIY group,many people always ask him questions about number theory.One day,all members urged him to conduct a lesson in the group.The rookie daizhenyang is extremely weak at math,so he is delighted.
However,when AekdyCoin tells us "As we know, some numbers have interesting property. For example, any even number has the property that could be divided by 2.",daizhenyang got confused,for he don't have the concept of divisibility.He asks other people for help,first,he randomizely writes some positive integer numbers,then you have to pick some numbers from the group,the only constraint is that if you choose number a,you can't choose a number divides a or a number divided by a.(to illustrate the concept of divisibility),and you have to choose as many numbers as you can.
Poor daizhenyang does well in neither math nor programming.The responsibility comes to you!
 

 

Input
An integer t,indicating the number of testcases,
For every case, first a number n indicating daizhenyang has writen n numbers(n<=1000),then n numbers,all in the range of (1...2^63-1).
 

 

Output
The most number you can choose.
 

 

Sample Input
 
   
1 3 1 2 3
 

 

Sample Output
 
   
2 Hint: If we choose 2 and 3,one is not divisible by the other,which is the most number you can choose.
 
思路:题目是要求找相互之间没有约数的最大个数
1、首先对这些数从小到大排序,定义一个数组对这些数进行纪录是否访问过
2、从小到大访问,对没访问过的进行搜索,temp++,假如mod这个数能等于0的就标记 访问过了,然后对这个数搜索,直到没有数能mod这个数,则一次的搜索 完被标记的这些数就不满足。
3、重复步骤2。
代码如下:
#include using namespace std; __int64 a[1005],b[1005]; int t,n,i,j,k,temp; void BFS(int x) { b[x]=0; for(k=x+1;k

你可能感兴趣的:(搜索题)